1个稳定版本

1.0.1 2022年9月27日

#221无标准库

MIT 许可证

11KB
203

ConstDefault特质

Crates.io Crates.io docs.rs actions

一个类似Default的特质和用于const评估上下文的推导宏。

此包定义了ConstDefault特质,并为其实现了Rust原始类型、预定义类型、元组和数组。此外,它还提供了一个推导宏,使用户可以轻松地为自定义类型实现ConstDefault

  • 100%安全的Rust
  • no_std兼容
  • 完整的宏洁度
  • 无依赖

使用方法

添加

[dependencies]
constdefault = { version = "1.0", features = ["derive"] }

到您的Cargo.toml以开始使用。

示例

Rust原始类型

use constdefault::ConstDefault;

fn main() {
    assert_eq!(<i32 as ConstDefault>::DEFAULT, 0);
    assert_eq!(<Option<i32> as ConstDefault>::DEFAULT, None);
    assert_eq!(<String as ConstDefault>::DEFAULT, String::new());
    assert_eq!(<Vec<u8> as ConstDefault>::DEFAULT, Vec::new());
}

推导

use constdefault::ConstDefault;

#[derive(ConstDefault, Debug, Default, PartialEq)]
pub struct Color {
    r: u8,
    g: u8,
    b: u8,
}

fn main() {
    assert_eq!(
        <Color as ConstDefault>::DEFAULT,
        Color::default(),
    );
}

依赖

~215KB