如何创建一个所有字段都是公共的公共结构,而无需为每个字段重复“pub”?

2024-03-09

如何在 Rust 中定义一个公共结构,其中所有字段都是公共的,而不必重复pub每个字段前面的修饰符?

A pub_struct宏将是理想的:

pub_struct! Foo {
    a: i32,
    b: f64,
    // ...
}

这相当于:

pub struct Foo {
    pub a: i32,
    pub b: f64,
    //...
}

macro_rules! pub_struct {
    ($name:ident {$($field:ident: $t:ty,)*}) => {
        #[derive(Debug, Clone, PartialEq)] // ewww
        pub struct $name {
            $(pub $field: $t),*
        }
    }
}

很遗憾,derive可能只适用于结构、枚举和联合,所以我不知道如何将它们提升给调用者。

Usage:

pub_struct!(Foo {
    a: i32,
    b: f64,
});

如果我不需要括号和分号,即如果 Rust 支持读取器宏,那就太好了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何创建一个所有字段都是公共的公共结构,而无需为每个字段重复“pub”? 的相关文章

随机推荐