1个不稳定版本

0.1.0 2023年1月14日

#59#rewrite

Download history • Rust 包仓库 26/week @ 2024-03-21 • Rust 包仓库 29/week @ 2024-03-28 • Rust 包仓库 6/week @ 2024-04-04 • Rust 包仓库 19/week @ 2024-04-11 • Rust 包仓库 7/week @ 2024-04-18 • Rust 包仓库 9/week @ 2024-05-02 • Rust 包仓库 11/week @ 2024-05-09 • Rust 包仓库 16/week @ 2024-05-16 • Rust 包仓库 23/week @ 2024-05-23 • Rust 包仓库 25/week @ 2024-05-30 • Rust 包仓库 28/week @ 2024-06-06 • Rust 包仓库 41/week @ 2024-06-13 • Rust 包仓库 9/week @ 2024-06-20 • Rust 包仓库 1/week @ 2024-06-27 • Rust 包仓库

57 每月下载次数

MIT 许可证

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