derive_setters 0.1.2

Rust macro to automatically generates setter methods for a struct's fields.
Documentation

derive_setters

Build Status Latest Version Requires rustc 1.31+

Rust macro to automatically generates setter methods for a struct's fields. This can be used to add setters to a plain data struct, or to help in implementing builders.

For a related library that creates separate builder types, see rust-derive-builder.

Basic usage example

# use derive_setters::*;
#[derive(Default, Setters, Debug, PartialEq, Eq)]
struct BasicStruct {
    #[setters(rename = "test")]
    a: u32,
    b: u32,
    c: u32,
}

assert_eq!(
    BasicStruct::default().test(30).b(10).c(20),
    BasicStruct { a: 30, b: 10, c: 20 },
);

Additional options

The following options can be set on the entire struct.

  • #[setters(generate = "false")] causes setter methods to not be generated by default.
  • #[setters(generate_private = "false")] causes setter methods to not be generated by default for private fields.
  • #[setters(generate_public = "false")] causes setter methods to not be generated by default for public fields.
  • #[setters(no_std)] causes the generated code to use core instead of std.
  • #[setters(prefix = "with_")] causes the setter method on all fields to be prefixed with the given string.

The following options can be set on a fields.

  • #[setters(generate)] causes a setter method to be generated, overriding struct-level settings.
  • #[setters(skip)] causes no setter method to be generated.
  • #[setters(rename = "setter_name")] causes the setter method to have a different name from the field. This overwrites add_prefix.

The following options can be set on either the entire struct, or on an individual field. You can disable the features for a particular field with #[setters(option = "false")]

  • #[setters(into)] causes the setter method to accept any type that can be converted into the field's type via Into.
  • #[setters(strip_option)] causes the setter method to accept T instead of Option<T>. If applied to a field that isn't wrapped in an Option, it does nothing.
  • #[setters(bool)] causes the setter method to take no arguments, and set the field to true.

License

This project is licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in enumset by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.