#default #better #macro #derive #enums

better-default-derive

更好的Default宏

2个版本

0.1.1 2023年4月8日
0.1.0 2023年4月7日

过程宏 中排名第 1480

每月下载量 25

MIT许可 MIT

9KB
149

better-default-derive crates.io github actions徽章

更好的 std::default::Default 宏。

支持

  • 结构体
    • 单元
    • 命名
    • 匿名
    • 泛型
  • 枚举
    • 单元
    • 命名
    • 匿名
    • 泛型

用法

[dependencies]
better-default-derive = "0.1.0"
use better_default_derive::Default;

#[derive(Debug, PartialEq, Eq, Default)]
enum Either<L, R> {
    Left(L),
    #[default]
    Right(R),
}

fn main() {
    let either: Either<String, u8> = Either::default();
    assert_eq!(either, Either::Right(u8::default()));
}

路线图

  • 当字段缺少Default实例时,提供更好的错误信息。

  • 支持联合类型

  • 支持关联类型

    use better_default_derive::Default;
    
    pub trait Trait {
        type Value;
    }
    
    #[derive(Default)]
    pub struct Field<T: Trait> {
        values: Vec<T::Value>,
    }
    

依赖

~290–760KB
~18K SLoC