#signal #reactive #frp #futures

futures-signals

Zero cost FRP signals using the futures crate

22 releases

✓ Uses Rust 2018 edition

0.3.15 Mar 16, 2020
0.3.12 Feb 22, 2020
0.3.8 Aug 28, 2019
0.3.7 Jul 23, 2019
0.1.0 Mar 18, 2018

#56 in Asynchronous

Download history 96/week @ 2020-03-23 21/week @ 2020-03-30 92/week @ 2020-04-06 122/week @ 2020-04-13 44/week @ 2020-04-20 52/week @ 2020-04-27 40/week @ 2020-05-04 70/week @ 2020-05-11 57/week @ 2020-05-18 36/week @ 2020-05-25 105/week @ 2020-06-01 7/week @ 2020-06-08 38/week @ 2020-06-15 12/week @ 2020-06-22 67/week @ 2020-06-29 48/week @ 2020-07-06

282 downloads per month
Used in 2 crates

MIT license

225KB
4.5K SLoC

This is a Rust crate that provides zero-cost 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!

Dependencies

~1.2–1.8MB
~37K SLoC