#struct #nullable #getter #getter-setter #generate #field #create

nullable_struct

一个派生宏,使创建结构体的可空版本变得容易

1 个不稳定版本

0.1.0 2023年9月4日

#1799过程宏

Apache-2.0

9KB
90

Nullable Struct

github crates.io docs.rs

介绍

nullable_structs 是一个 Rust crate,它提供了一个可空派生宏。此宏使得创建每个字段都被 Option 包装的结构体变得非常容易,从而使每个字段都可以为可空。此外,该 crate 为这些字段生成了方便的获取和设置方法。

[dependencies]
nullable_struct = "0.1.0"

功能

  • 将结构体的每个字段包装在 Option 中。
  • 生成返回包装值或默认值的获取方法。
  • 生成返回 Option<&T> 的获取方法。
  • 生成更新每个字段值的设置方法。
  • 提供构造函数以使用 None 初始化每个字段。
  • 实现 Default 特性,将所有字段初始化为 None。

示例

以下是一个基本示例,演示如何使用 nullable_struct

extern crate nullable_structs;
use nullable_struct::Nullable;

#[derive(Nullable)]
struct MyStruct {
    field1: i32,
    field2: String,
}

fn main() {
    let mut instance = NullableMyStruct::new(42, "Hello".to_string());
    println!("Field1: {}", instance.field1());  // Output: 42
    println!("Field2: {}", instance.field2());  // Output: Hello

    instance.set_field1(13);
    instance.set_field2("World".to_string());

    if let Some(value) = instance.get_field1() {
        println!("Field1 exists: {}", value); // Output: 13
    }

    if let Some(value) = instance.get_field2() {
        println!("Field2 exists: {}", value); // Output: World
    }
}

许可证

该项目受 Apache License 2.0 许可证许可 - 有关详细信息,请参阅 LICENSE 文件。

依赖关系

~1.5MB
~35K SLoC