3个版本 (破坏性更新)

0.3.0 2022年9月11日
0.2.0 2022年9月6日
0.1.0 2022年8月29日

#10 in #named-fields

每月21次下载
用于 eiga

MIT 协议

8KB
106

此包提供了一个推导宏,实现了builder lite模式。

由于此设计用于与eiga一起使用,它做了一些假设

  • 目标结构体有命名字段。
  • 可选字段以Option<...>的形式编写。宏不会识别任何其他形式的Option类型,例如std::option::Option
  • 可选字段代表查询字符串参数。

示例

#[derive(Builder)]应用于

#[derive(Builder)]
struct Foo<'a> {
    x: i32,
    y: Option<&'a str>,
}

生成

impl<'a> Foo<'a> {
    /// Constructs a new [`Foo`].
    pub fn new(x: i32) -> Self {
        Self {
            x,
            y: None,
        }
    }

    /// Sets the y query string parameter.
    pub fn y(mut self, y: &'a str) -> Self {
        self.y = Some(y);
        self
    }
}

依赖关系

~1.5MB
~35K SLoC