41 releases

new 0.3.34 Jul 26, 2024
0.3.33 Sep 7, 2023
0.3.32 Mar 18, 2023
0.3.31 Sep 10, 2022
0.1.0 Mar 18, 2018

#42 in Asynchronous

Download history 1906/week @ 2024-04-04 2285/week @ 2024-04-11 2307/week @ 2024-04-18 2676/week @ 2024-04-25 2796/week @ 2024-05-02 3473/week @ 2024-05-09 3025/week @ 2024-05-16 2251/week @ 2024-05-23 3280/week @ 2024-05-30 2647/week @ 2024-06-06 3232/week @ 2024-06-13 2713/week @ 2024-06-20 3832/week @ 2024-06-27 2911/week @ 2024-07-04 3957/week @ 2024-07-11 3100/week @ 2024-07-18

14,214 downloads per month
Used in 51 crates (28 directly)

MIT license

275KB
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.

Dependencies

~1.3–2.1MB
~42K SLoC