constructor-lite 0.3.0

Generate minimal constructors for structs
Documentation

constructor-lite

Build Status Crates.io Documentation License: LGPL-2.1-or-later

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 },
)

License

This project is licensed under the MIT License.

See LICENSE for more information.