#type-state #枚举 #构建 #帮助 #API # #动作

typestate-enum

一个宏,用于帮助构建简单的 Typestate API

1 个不稳定版本

0.0.1 2023 年 11 月 5 日

12#type-state 中排名

每月 28 次下载

MIT 许可证

5KB
94

typestate-enum

Rust 宏,用于帮助构建简单的 Typestate API。

示例

以下示例定义了一个 trait State 和 3 个零大小类型,它们实现了该 trait:ReadyWorkingComplete。然后可以使用这些类型来构建简单的 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()
    }
}

无运行时依赖