Crate dataclasses

Crate dataclasses 

Source
Expand description

A simple Dataclass derive macro inspired by Python’s dataclasses.

Features implemented:

  • Generate pub fn new(...) -> Self constructor 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, Eq for the struct
  • Implement Default when 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);

Derive Macros§

Dataclass