| Crates.io | defew |
| lib.rs | defew |
| version | 0.1.15 |
| created_at | 2025-03-08 11:41:53.26667+00 |
| updated_at | 2025-03-15 12:16:28.923099+00 |
| description | A new() derive macro for structs |
| homepage | |
| repository | https://github.com/mzyy94/defew |
| max_upload_size | |
| id | 1584336 |
| size | 35,386 |
new()Creates a new() constructor with specified default values for a struct.
use defew::Defew;
#[derive(Defew)]
struct Data {
a: i32,
#[new("ABC")]
b: &'static str,
#[new(Some(42))]
c: Option<u64>,
}
let value = Data::new();
assert_eq!(value.a, 0);
assert_eq!(value.b, "ABC");
assert_eq!(value.c, Some(42));
#[derive(Defew)]
struct Values(#[new] i32, #[new(0.5)] f64);
let value = Values::new(42);
assert_eq!(value.0, 42);
assert_eq!(value.1, 0.5);
use defew::Defew;
pub trait Trait<T> {
fn new(value: T) -> Self;
}
#[derive(Defew)]
#[defew(Trait<T>)] // <- optional Trait for the `::new(..)`.
struct Data<T> {
a: i32, // <- field without #[new(..)] attribute must have `Default::default()`.
#[new(42)] // <- #[new(value)] specifies the default `value` for the field.
b: u64,
#[new] // <- #[new] specifies that the field is passed to the `::new(..)` constructor.
c: T,
}
See releases page
MIT OR Apache-2.0