5个版本 (破坏性更新)
0.5.0 | 2024年1月20日 |
---|---|
0.4.0 | 2024年1月10日 |
0.3.0 | 2023年10月21日 |
0.2.0 | 2023年10月19日 |
0.1.0 | 2023年10月18日 |
#1656 在 过程宏
每月下载量:372
在 13 个 crates 中使用 (5个直接使用)
9KB
108 行
一个自定义 derive 实现,用于 #[derive(With)]
入门指南
1. 为命名结构体中的每个字段生成 with-constructor。
#[derive(With)]
pub struct Foo {
pub a: i32,
pub b: String,
}
这将生成代码
impl Foo {
pub fn with_a(mut self, a: impl Into<i32>) -> Self {
self.a = a.into();
self
}
pub fn with_b(mut self, b: impl Into<String>) -> Self {
self.b = b.into();
self
}
}
2. 为元组结构体中的每个字段生成 with-constructor。
#[derive(With)]
pub struct Bar (i32, String);
这将生成代码
impl Bar {
pub fn with_0(mut self, field_0: impl Into<i32>) -> Self {
self.0 = field_0.into();
self
}
pub fn with_1(mut self, field_1: impl Into<String>) -> Self {
self.1 = field_1.into();
self
}
}
3. 为命名结构体中的特定字段生成 with-constructor。
#[derive(With)]
#[with(a)]
pub struct Foo {
pub a: i32,
pub b: String,
}
这将生成代码
impl Foo {
pub fn with_a(mut self, a: impl Into<i32>) -> Self {
self.a = a.into();
self
}
}
4. 为元组结构体中的特定字段生成 with-constructor。
#[derive(With)]
#[with(1)]
pub struct Bar (i32, String);
这将生成代码
impl Bar {
pub fn with_1(mut self, field_1: impl Into<String>) -> Self {
self.1 = field_1.into();
self
}
}
参考
依赖关系
~265–710KB
~17K SLoC