constdefault-derive

Crates.ioconstdefault-derive
lib.rsconstdefault-derive
version0.2.1
sourcesrc
created_at2022-09-27 22:54:39.548902
updated_at2022-09-27 22:57:07.76138
description#[derive(ConstDefault)]
homepage
repositoryhttps://github.com/semtexzv/const-default.rs
max_upload_size
id675276
size7,081
Michal Hornický (semtexzv)

documentation

https://docs.rs/constdefault-derive

README

ConstDefault Trait

Crates.io Crates.io docs.rs actions

A Default-like trait and derive macros for const evaluation contexts.

This crate defines the ConstDefault trait and implements it for Rust primitives, prelude types, tuples and arrays. Furthermore it provides a derive macro so that users can implement ConstDefault easily for their custom types.

  • 100% safe Rust
  • no_std compatible
  • Full macro hygiene
  • No dependencies

Usage

Add

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

to your Cargo.toml to start using it.

Examples

Rust Primitives

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());
}

Derive

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(),
    );
}
Commit count: 46

cargo fmt