1 个不稳定版本
0.1.0 | 2022年6月15日 |
---|
#12 in #decorator
11KB
176 行
编写将函数连接到特质的样板代码让我感到厌烦,所以我创建了一个辅助工具
使用 #[dizpacho]
装饰 impl 块,然后您可以使用 dizpacho
属性在方法和关联函数上连接到您喜欢的任何特质!
struct TooLazyToType(String);
struct OtherThing;
#[dizpacho::dizpacho]
impl TooLazyToType {
/// Just call my new() function for default!
#[dizpacho(Default::default)]
fn new() -> Self {
Self("howdy!".to_string())
}
}
assert_eq!(&TooLazyToType::default().0, "howdy!");
struct TooLazyToType(String);
struct OtherThing;
#[dizpacho::dizpacho]
impl TooLazyToType {
#[dizpacho(std::ops::Deref<Target = str>::deref)]
fn as_str(&self) -> &str {
&self.0
}
}
#[dizpacho::dizpacho]
impl OtherThing {
/// You can even do generics!
#[dizpacho(From<Self>::from for TooLazyToType)]
fn from_other(thing: OtherThing) -> TooLazyToType {
TooLazyToType("I came from the other thing!".to_string())
}
}
assert!(TooLazyToType::from(OtherThing).0.ends_with("thing!"))
依赖项
~1.5MB
~35K SLoC