1个不稳定版本
0.1.0 | 2023年1月14日 |
---|
#59 在 #rewrite
57 每月下载次数
6KB
82 代码行
rewrite-impl-trait
此crate将函数签名中使用的impl Trait
转换为方法泛型。以下是一些示例
工作原理
宏into_generic
将
#[rewrite_impl_trait::into_generic]
fn to_string(arg: impl ToString) -> String {
arg.to_string()
}
// expands to:
fn to_string<RewriteImplTrait0: ToString>(arg: RewriteImplTrait0) -> String {
arg.to_string()
}
pub trait AppendString {
fn append_string(&mut self, param: impl ToString);
}
// expands to:
pub trait AppendString {
fn append_string<RewriteImplTrait0: ToString>(&mut self, param: RewriteImplTrait0);
}
这可以用来解决impl Trait
的语言问题,例如在类型别名中缺乏支持。它还使得mockall能够用于在方法参数中使用impl Trait
的特质。
用法
运行cargo add rewrite-impl-trait
。
然后,将#[rewrite_impl_trait::into_generic]
添加到您的特质、特质实现或函数中。
依赖项
~1.5MB
~35K SLoC