4 个版本 (2 个破坏性更新)
0.3.0 | 2023 年 12 月 17 日 |
---|---|
0.2.0 | 2023 年 6 月 11 日 |
0.1.1 | 2023 年 6 月 11 日 |
0.1.0 | 2023 年 6 月 11 日 |
#639 in 异步
39KB
752 行
此状态
此状态提供了一种以线程安全的方式存储状态以及异步等待状态变化的方法。
示例
以下示例使用了以下状态
#[derive(Clone, Debug, PartialEq)]
enum MyState {
A,
B,
C
}
等待状态变化
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);
lib.rs
:
用于管理状态变化的库。
示例
以下示例使用了以下状态
#[derive(Clone, Debug, PartialEq)]
enum MyState {
A,
B,
C
}
等待状态变化
#
#
#
let state = State::new(MyState::A);
let state_clone = state.clone();
tokio::spawn(async move {
// do some work
# tokio::time::sleep(tokio::time::Duration::from_millis(10)).await;
state_clone.set(MyState::B);
// do some more work
# tokio::time::sleep(tokio::time::Duration::from_millis(10)).await;
state_clone.set(MyState::C);
});
state.wait_for_state(MyState::C).await;
assert_eq!(state.get(), MyState::C);
依赖项
~0.4–5.5MB
~11K SLoC