14 个版本 (6 个稳定版)
1.2.0 | 2024年2月27日 |
---|---|
1.1.0 | 2023年5月1日 |
1.0.1 | 2022年6月3日 |
0.5.0 | 2021年11月5日 |
0.2.0 | 2017年10月9日 |
#90 in Rust 模式
634,652 monthly downloads
用于 862 个包 (81 个直接使用)
61KB
936 行
auto_impl
一个用于自动为引用、一些常见智能指针和闭包实现特质的 proc-macro 属性。
用法
此库需要 Rust 1.56.0 或更高版本。此库不会在您的代码中留下任何公共 API。
将 auto_impl
添加到您的 Cargo.toml
,并在您的包中使用它
// In Rust 2015 you still need `extern crate auto_impl;` at your crate root
use auto_impl::auto_impl;
将 auto_impl
属性添加到您想要自动实现包装类型特质的特质中。以下是一个简单的示例
// This will generate two additional impl blocks: one for `&T` and one
// for `Box<T>` where `T: Foo`.
#[auto_impl(&, Box)]
trait Foo {
fn foo(&self);
}
impl Foo for i32 {
fn foo(&self) {}
}
fn requires_foo(_: impl Foo) {}
requires_foo(0i32); // works: through the impl we defined above
requires_foo(&0i32); // works: through the generated impl
requires_foo(Box::new(0i32)); // works: through the generated impl
有关更多信息,请参阅 文档,有关更多示例,请参阅 示例文件夹。
替代方案
此库实现了非常广泛且复杂的使用场景的一部分。它主要用于定义特质的组件的应用程序,并希望能够对这些特质的存储进行抽象。如果它不提供您需要的某些功能,请查看 impl-tools
项目。
许可证
根据以下任一许可证授权
- Apache License, Version 2.0, (LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- 麻省理工学院许可证(LICENSE-MIT 或 http://opensource.org/licenses/MIT)
根据您的选择。
贡献
除非您明确表示不同,否则根据Apache-2.0许可证定义的,您有意提交以包含在该作品中的任何贡献,应以上述双许可方式许可,不附加任何额外条款或条件。
依赖项
~275–730KB
~17K SLoC