#signal #future #reactive #frp #functional-reactive-programming


Zero cost FRP signals using the futures crate

40 releases

0.3.33 Sep 7, 2023
0.3.32 Mar 18, 2023
0.3.31 Sep 10, 2022
0.3.30 Jul 24, 2022
0.1.0 Mar 18, 2018

#75 in Asynchronous

Download history 1526/week @ 2023-12-07 1819/week @ 2023-12-14 1006/week @ 2023-12-21 1328/week @ 2023-12-28 1833/week @ 2024-01-04 2098/week @ 2024-01-11 2370/week @ 2024-01-18 2559/week @ 2024-01-25 2936/week @ 2024-02-01 2935/week @ 2024-02-08 2582/week @ 2024-02-15 2721/week @ 2024-02-22 2410/week @ 2024-02-29 2619/week @ 2024-03-07 2388/week @ 2024-03-14 2333/week @ 2024-03-21

10,195 downloads per month
Used in 45 crates (25 directly)

MIT license

5.5K SLoC

crates.io docs.rs

This is a Rust crate that provides zero-cost FRP Signals which are built on top of the futures crate.

Hold on, zero-cost? Yup, that's right: if you don't use a feature you don't pay any performance cost, and the features that you do use are as fast as possible. Signals are very efficient.

What is a Signal? It is a value that changes over time, and you can be efficiently notified whenever its value changes.

This is useful in many situations:

  • You can automatically serialize your program's state to a database whenever it changes.

  • You can automatically send a message to the server whenever the client's state changes, or vice versa. This can be used to automatically, efficiently, and conveniently keep the client and server's state in sync.

  • A game engine can use Signals to automatically update the game's state whenever something changes.

  • You can easily represent continuous input (such as the current temperature, or the current time) as a Signal.

  • If you create a GUI, you can use Signals to automatically update the GUI whenever your state changes, ensuring that your state and the GUI are always in sync.

  • You can use dominator to create web apps and automatically keep them in sync with your program's state.

  • And many more situations!

The best way to learn more is to read the tutorial.


~43K SLoC