1 个不稳定版本

0.5.1 2021年11月30日

#26#impl-block

MIT/Apache

60KB
860 代码行

auto_impl 加入https://gitter.im/auto-impl-rs/Lobby的聊天 CI Crates.io docs

一个用于自动为引用、一些常见智能指针和闭包实现特质的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-2.0许可证约束的任何贡献,应如上所述双重许可,不附加任何额外条款或条件。

依赖项

~1.5MB
~36K SLoC