#traits #implicit #methods #foreign #type #defined #implicitly

implicit-trait

为具有隐式定义特性的外部类型添加方法

5个不稳定版本

0.3.0 2023年1月28日
0.2.2 2023年1月28日
0.2.1 2023年1月28日
0.2.0 2023年1月28日
0.1.0 2023年1月28日

1823过程宏

MIT 协议

4KB

implicit-trait

创建隐式特性以向现有类型添加方法。

use implicit_trait::implicit_trait;

// Assume Foo is from another crate, so we can't implement methods on it.
pub struct Foo {
    pub bar: i32,
    pub baz: String,
}

// Define new methods on Foo
#[implicit_trait]
impl FooExt for Foo {
    fn bar(&self) -> i32 {
        self.bar
    }

    fn baz(&self) -> &str {
        &self.baz
    }
}

// Use the new methods
fn main() {
    let foo = Foo {
        bar: 42,
        baz: "hello".to_string(),
    };
    assert_eq!(foo.bar(), 42);
    assert_eq!(foo.baz(), "hello");
}

依赖项

~1.5MB
~35K SLoC