#struct #getter #macro

autoget

一个用于生成结构体获取器的简单宏

3个版本

0.1.2 2023年8月7日
0.1.1 2023年8月7日
0.1.0 2023年8月5日

#825 in 过程宏

Apache-2.0

9KB
145

autoget

一个用于生成Rust结构体成员获取器的简单宏。

用法

#[derive(AutoGet)]
struct Something {
    test: String,
    test2: String,
    test3: String,
}

这将生成类似以下代码

impl Something {
    fn test(&self) -> &String {
        &self.test
    }
    fn test_mut(&mut self) -> &mut String {
        &mut self.test
    }
    fn test2(&self) -> &String {
        &self.test2
    }
    fn test2_mut(&mut self) -> &mut String {
        &mut self.test2
    }
    fn test3(&self) -> &String {
        &self.test3
    }
    fn test3_mut(&mut self) -> &mut String {
        &mut self.test3
    }
}

要禁用可变获取器,您可以在选定的成员结构体上使用#[no_mut]宏辅助属性。

#[derive(AutoGet)]
struct Something {
    test: String,
    #[no_mut]
    test2: String,
    test3: String,
}

或者,您可以通过使用#[exclude]完全禁用获取器。

#[derive(AutoGet)]
struct Something {
    test: String,
    #[exclude]
    test2: String,
    test3: String,
}

您可以将它们一起使用,例如

#[derive(autoget::AutoGet)]
struct Something {
    test: String,

    #[exclude]
    test2: String,

    #[no_mut]
    test3: String,
}

许可证

autoget可在MIT许可证下获得。有关更多信息,请参阅LICENSE文件。

依赖项

~295–750KB
~18K SLoC