Expand description
A simple Dataclass derive macro inspired by Python’s dataclasses.
Features implemented:
- Generate
pub fn new(...) -> Selfconstructor which accepts values for non-default fields - Support field-level defaults via
#[dataclass(default)]and#[dataclass(default = "expr")](expr as string literal) - Implement
Clone,Debug,PartialEq,Eqfor the struct - Implement
Defaultwhen all fields have defaults
Examples:
use dataclasses::Dataclass;
#[derive(Dataclass)]
struct Person {
name: String,
age: i32,
#[dataclass(default)]
nickname: Option<String>,
#[dataclass(default = "Vec::new()")]
tags: Vec<String>,
}
let p = Person::new("Alice".into(), 30);
assert_eq!(p.nickname, None);