1 个不稳定版本
0.5.1 | 2021年11月30日 |
---|
#26 在 #impl-block
60KB
860 代码行
auto_impl
一个用于自动为引用、一些常见智能指针和闭包实现特质的proc-macro属性。
用法
此库需要Rust 1.37.0或更高版本。
将 auto_impl
添加到您的 Cargo.toml
并在您的crate中使用它
// 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
许可协议
许可协议为以下之一
- Apache License,版本2.0,(LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT许可协议(LICENSE-MIT 或 http://opensource.org/licenses/MIT)
由您选择。
贡献
除非您明确说明,否则您有意提交以包含在作品中并由您定义的Apache-2.0许可证约束的任何贡献,应如上所述双重许可,不附加任何额外条款或条件。
依赖项
~1.5MB
~36K SLoC