1 个不稳定版本
使用旧的 Rust 2015
0.1.0 | 2017年4月12日 |
---|
#3 in #blanket
在 2 个crate中使用了(通过 rustiful)
2KB
泛型特质的DRY(Don't Repeat Yourself)实现!
你有泛型特质吗?你觉得为它添加泛型实现是重复的?那么这个宏就是为你准备的!这是一个基于 proc-macro-hack 的宏,有助于减少一些重复,且与任何 Rust 版本 >= 1.15.0 兼容。
autoimpl!
宏为具有与传入 autoimpl!
块中特质相同边界的所有 T
生成泛型特质的默认泛型实现。
注意事项
- 这仅适用于具有类型参数的特质
- 你只能在每个
autoimpl!
块中传入一个特质 - 目前仅支持单个类型参数
- 目前,由于 proc-macro-hack 的限制,每个模块中只能有一个
autoimpl!
块。
安装
如果你使用 Cargo
,只需将 autoimpl 添加到你的 Cargo.toml
[dependencies]
autoimpl = "0.1"
示例
#[macro_use] extern crate autoimpl;
struct Dog {}
struct Duck {}
fn main() {
autoimpl! {
trait Quack<T> {
fn say(&self) -> String {
"quack".to_string()
}
}
}
let dog = Dog {};
let duck = Duck {};
assert_eq!(dog.say(), duck.say());
}
依赖项
~1.5MB
~41K SLoC