Crates.io | useless_setter_maker |
lib.rs | useless_setter_maker |
version | 2.0.0 |
created_at | 2025-04-08 08:57:47.127191+00 |
updated_at | 2025-05-26 07:12:08.680009+00 |
description | Macro for generating setter methods. |
homepage | |
repository | https://github.com/madnoberson/useless-macros |
max_upload_size | |
id | 1625208 |
size | 34,862 |
A procedural macro crate for generating setter methods for Rust structs.
This project is licensed under the Apache 2.0 License. See the LICENSE file for details.
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")));
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")));