Crates.io | speare_macro |
lib.rs | speare_macro |
version | 0.0.8 |
source | src |
created_at | 2023-10-09 22:25:27.194523 |
updated_at | 2024-01-09 08:55:21.23402 |
description | macro to make speare crate easier to use |
homepage | https://github.com/vmenge/speare |
repository | https://github.com/vmenge/speare |
max_upload_size | |
id | 998562 |
size | 13,256 |
This crate's sole purpose is to reduce the amount of boilerplate needed when working with the speare
crate.
With it, we can write
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)
}
}
instead of
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)
}
}