4 个版本
0.1.3 | 2024 年 1 月 10 日 |
---|---|
0.1.2 | 2024 年 1 月 10 日 |
0.1.1 | 2024 年 1 月 10 日 |
0.1.0 | 2023 年 12 月 21 日 |
1084 在 Rust 模式 中
每月下载 42 次
35KB
974 代码行
anonymous-trait
使用捕获环境实现的匿名特质
示例
trait Cat {
fn meow(&self) -> String;
fn set_name(&mut self, new: String);
async fn meow_async(&self) -> String;
}
#[tokio::main]
async fn main() {
let name = "mock";
#[anonymous_trait::anonymous_trait(let mut cat_mock = "default".into())]
impl Cat for String {
fn meow(&self) -> String {
name.to_string()
}
fn set_name(&mut self, new: String) {
*self = new;
}
async fn meow_async(&self) -> String {
"meow".to_string()
}
}
run(&mut cat_mock).await;
}
async fn run(cat: &mut impl Cat) {
println!("meow: {}, expected: mock", cat.meow());
cat.set_name("hi".to_string());
println!("meow_async: {}, expected: meow", cat.meow_async().await);
}
依赖
~255–700KB
~17K SLoC