#constructor #macro-derive #struct-fields #macro #derive

constructor-lite

为结构体生成最小化构造函数

3 个版本 (破坏性更新)

0.3.0 2024年3月14日
0.2.0 2024年3月14日
0.1.0 2023年2月26日

#1470 in Rust模式

MIT 许可证

11KB
152

constructor-lite

Build Status Crates.io Documentation License: LGPL-2.1-or-later

此crate提供用于从其字段生成结构体最小化构造函数的ConstructorLite derive宏。

它主要用于无法使用Default派生的结构体,因为这些字段没有实现它。

默认情况下,生成一个相关函数new(),该函数期望每个不是Option<T>的字段作为参数。

  • 要为构造函数函数的预期参数添加可选字段,可以使用#[constructor(required)]进行标记。
  • 要从构造函数函数中移除实现Default的非可选字段,可以使用#[constructor(default)]进行标记。
  • 要更改生成的函数名称,可以将结构体标记为例如#[constructor(name = "function_name")]
  • 默认情况下,生成的函数具有与结构体相同的可见性。要覆盖此行为,可以在结构体上标记,例如:#[constructor(visibility = "pub(super)")]

对于更高级的使用,您可能更喜欢使用derive-newderive_builder

示例

use constructor_lite::ConstructorLite;

#[derive(Debug, PartialEq, ConstructorLite)]
struct Movie {
    title: String,
    year: Option<u16>,
}

assert_eq!(
    Movie::new("Star Wars".to_owned()),
    Movie { title: "Star Wars".to_owned(), year: None },
)

许可证

本项目受MIT许可证许可。

更多信息请见LICENSE

依赖项

~0.6–1.1MB
~25K SLoC