8个版本
0.0.8 | 2024年1月9日 |
---|---|
0.0.7 | 2023年11月13日 |
0.0.1 | 2023年10月9日 |
#862 in 过程宏
14KB
235 行
已废弃
speare_macro
此crate的唯一目的是减少与speare
crate一起工作时所需的样板代码量。
有了它,我们可以编写
pub struct Foo;
#[process]
impl Foo {
#[handler]
async fn bar(&mut self, msg: u64, ctx: &Ctx<Self>) -> Result<String, ()> {
Ok(format!("{msg}"))
}
#[handler]
async fn baz(&mut self, msg: String, ctx: &Ctx<Self>) -> Result<String, ()> {
Ok(msg)
}
}
而不是
pub struct Foo;
impl Process for Foo {
type Error = ();
}
#[async_trait]
impl Handler<u64> for Foo {
type Ok = String;
type Err = ();
async fn handle(&mut self, msg: u64, ctx: &Ctx<Self>) -> Result<String, ()> {
Ok(format!("{msg}"))
}
}
#[async_trait]
impl Handler<String> for Foo {
type Ok = String;
type Err = ();
async fn handle(&mut self, msg: u64, ctx: &Ctx<Self>) -> Result<String, ()> {
Ok(msg)
}
}
依赖项
~280–740KB
~18K SLoC