1 个不稳定版本
0.0.1 | 2023 年 11 月 5 日 |
---|
12 在 #type-state 中排名
每月 28 次下载
5KB
94 行
typestate-enum
Rust 宏,用于帮助构建简单的 Typestate API。
示例
以下示例定义了一个 trait State
和 3 个零大小类型,它们实现了该 trait:Ready
、Working
和 Complete
。然后可以使用这些类型来构建简单的 Typestate API。
use typestate_enum::typestate_enum;
use std::marker::PhantomData;
typestate_enum! {
pub State {
Ready,
Working,
Complete
}
}
struct Action<S: State>(PhantomData<S>);
impl<S: State> Action<S> {
fn new() -> Self {
Action::<S>(PhantomData)
}
}
impl Action<Ready> {
fn start_work(self) -> Action<Working> {
Action::new()
}
}
impl Action<Working> {
fn complete_work(self) -> Action<Complete> {
Action::new()
}
}