constructor-lite

Crates.ioconstructor-lite
lib.rsconstructor-lite
version0.3.0
sourcesrc
created_at2023-02-26 17:38:31.197646
updated_at2024-03-14 20:58:10.65988
descriptionGenerate minimal constructors for structs
homepage
repositoryhttps://github.com/d-k-bo/constructor-lite
max_upload_size
id795369
size16,377
David C. (d-k-bo)

documentation

README

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.

Commit count: 5

cargo fmt