#traits #macro #derive-debug

injectify

用于在结构体中使用 impl Trait 的实用库

1 个稳定版本

1.0.0 2023年3月19日

#2016 in Rust 模式

MIT OR GPL-3.0

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