rs-store

Crates.iors-store
lib.rsrs-store
version0.12.0
sourcesrc
created_at2024-04-11 09:58:16.185475
updated_at2024-11-11 00:00:49.998
descriptionRedux Store for Rust
homepage
repositoryhttps://github.com/rookiecj/rs-store
max_upload_size
id1204668
size58,776
Changju Lee (rookiecj)

documentation

README

rs-store

rs-store is a Redux Store written in Rust.

Key Features

Manage and receive notifications of state changes through the Reducer and Subscriber interfaces. Store registers Reducer and Subscriber, dispatches actions to change the state, and sends notifications to subscribers. Store is designed to change states in thread-safe manner.

How to use

rust documentation is available at crates.io and docs.rs.


pub fn main() {
    println!("Hello, Calc!");

    let store = Store::<CalcState, CalcAction>::new(Box::new(CalcReducer::default()));

    store.add_subscriber(Arc::new(CalcSubscriber::default()));
    store.dispatch(CalcAction::Add(1));

    thread::sleep(std::time::Duration::from_secs(1));
    store.add_subscriber(Arc::new(CalcSubscriber::default()));
    store.dispatch(CalcAction::Subtract(1));

    store.stop();
}

Features

  • add thread name
  • subscription to unsubscribe
  • clear subscribers (clear_subscribers)
  • add Thunk action(dispatch_thunk)
  • notify the latest state when a subscriber added
  • add backpressure policy(drop oldest)
  • bounding channel size(sync_channel), dispatch can be failed
  • add scheduler for notification(CurrentThread, ThreadPool)
  • stream (pull model) instead of subscription(push model)
  • stats middleware which can be used to log the state changes
  • add tests
Commit count: 63

cargo fmt