2个版本

0.2.1 2022年9月27日
0.2.0 2022年9月27日

#137 in #tuple


constdefault 中使用

MIT 许可证

8KB
71

ConstDefault 特性

Crates.io Crates.io docs.rs actions

一个类似于 Default 的特性以及用于 const 评估环境的派生宏。

该crate定义了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(),
    );
}

依赖

~1.5MB
~35K SLoC