7个版本
0.1.6 | 2023年5月26日 |
---|---|
0.1.5 | 2021年1月25日 |
0.1.4 | 2020年3月29日 |
0.1.2 | 2019年10月28日 |
#58 in 过程宏
102,839 每月下载量
在 38 个包中使用 (23 直接)
18KB
291 行
derive_setters
Rust宏,自动为结构体的字段生成setter方法。这可以用于向纯数据结构添加setter,或帮助实现构建器。
有关创建单独构建器类型的相关库,请参阅 rust-derive-builder
。
基本用法示例
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 },
);
附加选项
以下选项可以设置在整个结构体上。
#[setters(generate = false)]
将导致默认不生成setter方法。#[setters(generate_private = false)]
将导致默认不生成私有字段的setter方法。#[setters(generate_public = false)]
将导致默认不生成公共字段的setter方法。#[setters(no_std)]
使生成的代码使用core
而不是std
。#[setters(prefix = "with_")]
使所有字段的setter方法前缀为指定的字符串。#[setters(generate_delegates(ty = "OtherTy", field = "some_field"))]
使此结构体上的所有setter方法在目标结构体上重复,而不是直接修改self.some_field
而不是self
。#[setters#[setters(generate_delegates)]
与上面一样,但用没有参数的get_field
调用代替直接访问字段。
以下是可以设置在字段上的选项。
#[setters(generate)]
将生成setter方法,覆盖结构体级别的设置。#[setters(skip)]
不会生成setter方法。#[setters(rename = "setter_name")]
使setter方法具有与字段不同的名称。这会覆盖add_prefix
。
以下选项可以应用于整个结构体或单个字段。您可以使用以下方式禁用特定字段的特性:#[setters(option = false)]
#[setters(into)]
使得setter方法接受任何可以通过Into
转换为字段类型的类型。#[setters(strip_option)]
使得setter方法接受T
而不是Option<T>
。如果应用于未包裹在Option
中的字段,则不起作用。#[setters(bool)]
使得setter方法不接受任何参数,并将字段设置为true
。#[setters(borrow_self)]
使得生成的setter方法借用&mut self
而不是接受self
。这对于需要可变setter而不是不可变setter的代码风格更好。
许可证
此项目可使用以下许可证之一
- Apache许可证2.0版本,(LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
由您选择。
贡献
除非您明确声明,否则您提交给enumset的任何有意贡献,根据Apache-2.0许可证定义,将按上述方式双授权,不附加任何额外条款或条件。
依赖关系
~0.6–1MB
~24K SLoC