Crate constructor_lite

Source
Expand description

This crate provides the ConstructorLite derive macro for generating minimal constructors for a struct from its fields.

It is primarily designed for structs where deriving Default is not possible because some fields don’t implement it.

By default, an associated function new() is generated, which expects every field that is not Option<T> as an argument.

  • To add an optional field to expected arguments of the constructor function, it can be marked with #[constructor(required)].
  • To remove a non-optional field that implements Default from the constructor function, it can be marked with #[constructor(default)].
  • To change the name of the generated function, the struct can be marked with e. g. #[constructor(name = "function_name")].
  • By default, the generated function has the same visibility as the struct. To override this behaviour, the struct can be marked with e. g. #[constructor(visibility = "pub(super)")].

For more advanced uses you might prefer using derive-new or derive_builder instead.

§Example

use constructor_lite::ConstructorLite;

#[derive(Debug, PartialEq, ConstructorLite)]
struct Movie {
    title: String,
    year: Option<u16>,
}

assert_eq!(
    Movie::new("Star Wars".to_owned()),
    Movie { title: "Star Wars".to_owned(), year: None },
)

Derive Macros§

ConstructorLite
Generate a constructor for the required fields of the struct.