this-state

Crates.iothis-state
lib.rsthis-state
version0.3.0
sourcesrc
created_at2023-06-11 02:22:53.869364
updated_at2023-12-17 00:54:05.955829
descriptionthis-state provides a way to store state in a thread-safe manner as well as a way to asynchronously wait for state changes
homepagehttps://github.com/tooboredtocode/this-state
repositoryhttps://github.com/tooboredtocode/this-state
max_upload_size
id887175
size41,393
(tooboredtocode)

documentation

https://docs.rs/this-state

README

this-state

this-state provides a way to store state in a thread-safe manner as well as a way to asynchronously wait for state changes.

Examples

The example below uses the following state:

#[derive(Clone, Debug, PartialEq)]
enum MyState {
    A,
    B,
    C
}

Waiting for a state change

let state = State::new(MyState::A);

let state_clone = state.clone();
tokio::spawn(async move {
    // do some work
    state_clone.set(MyState::B);
    // do some more work
    state_clone.set(MyState::C);
});

state.wait_for_state(MyState::C).await;

assert_eq!(state.get(), MyState::C);
Commit count: 12

cargo fmt