1 个稳定版本
1.0.0 | 2023年3月19日 |
---|
#2016 in Rust 模式
7KB
Injectify
实用库,用于在结构体中使用 impl Trait
。
示例
use injectify::Injectify;
use std::fmt::Debug;
// Allow `MyStruct` to contain implementations
// of `Trait1` and `Trait2` using `impl`:
#[Injectify]
#[derive(Debug)]
struct MyStruct<T> {
x: i32,
t1: impl Trait1,
t2: impl Trait2,
t2_2: impl Trait2,
t: T,
}
trait Trait1: Debug {}
trait Trait2: Debug {}
#[derive(Debug)]
struct T1(i64);
impl Trait1 for T1 {}
#[derive(Debug)]
struct T2(String);
impl Trait2 for T2 {}
#[derive(Debug)]
struct T3 { y: bool }
impl Trait2 for T3 {}
fn main() {
let my_struct = MyStruct {
x: 1337,
t1: T1(123),
t2: T2(String::from("abc")),
t2_2: T3 { y: true },
t: 20.23,
};
println!("{my_struct:#?}");
}
许可证
许可证许可证下 Apache 许可证 2.0 版或 MIT 许可证。
除非你明确表示,否则根据 Apache-2.0 许可证定义,你故意提交以包含在此软件包中的任何贡献,将按上述方式双重许可,没有额外的条款或条件。
依赖项
~255–700KB
~17K SLoC