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 模式

Download history 145991/week @ 2024-04-14 136848/week @ 2024-04-21 114697/week @ 2024-04-28 122262/week @ 2024-05-05 129682/week @ 2024-05-12 119122/week @ 2024-05-19 126389/week @ 2024-05-26 132629/week @ 2024-06-02 128853/week @ 2024-06-09 149749/week @ 2024-06-16 140903/week @ 2024-06-23 140437/week @ 2024-06-30 144666/week @ 2024-07-07 162300/week @ 2024-07-14 154231/week @ 2024-07-21 161255/week @ 2024-07-28

634,652 monthly downloads
用于 862 个包 (81 个直接使用)

MIT/Apache

61KB
936

auto_impl CI Crates.io docs

一个用于自动为引用、一些常见智能指针和闭包实现特质的 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-2.0许可证定义的,您有意提交以包含在该作品中的任何贡献,应以上述双许可方式许可,不附加任何额外条款或条件。

依赖项

~275–730KB
~17K SLoC