useless_setter_maker 2.0.0

Macro for generating setter methods.
Documentation
# Useless Setter Maker

<p align="left">
    <a href="https://crates.io/crates/useless-setter-maker">
        <img src="https://img.shields.io/crates/v/useless_setter_maker" alt="Crate version">
    </a>
    <a>
        <img src="https://img.shields.io/badge/license-Apache 2.0-green?logo=rust" alt="License">
    </a>
    <a>
        <img src="https://img.shields.io/badge/rust-1.85.0-green?logo=rust" alt="Rust version">
    </a>
    <a href="https://github.com/madnoberson/useless-macros/actions/workflows/lint-and-test.yaml" target="_blank">
        <img src="https://img.shields.io/github/actions/workflow/status/madnoberson/useless-macros/lint-and-test.yaml?logo=github" alt="Status of passing 'lint-and-test' workflow">
    </a>
</p>

A procedural macro crate for generating setter methods for Rust structs.

## License

This project is licensed under the Apache 2.0 License. See the [LICENSE](LICENSE) file for details.

## Examples

### Builder setters

```rust
use useless_setter_maker::make_builder_setters;

#[make_builder_setters]
#[derive(Debug, PartialEq, Default)]
struct Config {
    #[builder_setter(prefix = "set", visibility = "pub")]
    host: String,
    
    #[builder_setter(suffix = "number", visibility = "pub(crate)")]
    port: u16,
    
    #[builder_setter(name = "enable_logging")]
    #[builder_setter(name = "install_logging")]
    logging: bool,
    
    #[disable_builder_setters]
    internal: bool,

    #[builder_setter(with_into = false)]
    updated_at: Option<String>,
}

let config = Config::default()
    .set_host("localhost")                    // Pub
    .with_number(8080 as u16)                 // Pub(crate)
    .enable_logging(true)                     // Pub, first logging setter  
    .install_logging(true)                    // Pub, second logging setter
    .with_updated_at(String::from("today"));  // Pub
    
assert_eq!(config.host, "localhost");
assert_eq!(config.port, 8080);
assert_eq!(config.logging, true);
assert_eq!(config.internal, false);
assert_eq!(config.updated_at, Some(String::from("today")));
```

### Basic setters

```rust
use useless_setter_maker::make_basic_setters;

#[make_basic_setters]
#[derive(Debug, PartialEq, Default)]
struct Config {
    #[basic_setter(prefix = "with", visibility = "pub")]
    host: String,
    
    #[basic_setter(suffix = "number", visibility = "pub(crate)")]
    port: u16,
    
    #[basic_setter(name = "enable_logging")]
    #[basic_setter(name = "install_logging")]
    logging: bool,
    
    #[disable_basic_setters]
    internal: bool,

    #[basic_setter(with_into = false)]
    updated_at: Option<String>,
}

let mut config = Config::default();

config.with_host("localhost");                  // Pub
config.set_number(8080 as u16);                 // Pub(crate)
config.enable_logging(true);                    // Pub, first logging setter  
config.install_logging(true);                   // Pub, second logging setter
config.set_updated_at(String::from("today"));   // Pub
    
assert_eq!(config.host, "localhost");
assert_eq!(config.port, 8080);
assert_eq!(config.logging, true);
assert_eq!(config.internal, false);
assert_eq!(config.updated_at, Some(String::from("today")));
```