首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何创建一个公共结构,其中所有的字段都是公共的,而不是为每个字段重复`pub`?

如何创建一个公共结构,其中所有的字段都是公共的,而不是为每个字段重复`pub`?
EN

Stack Overflow用户
提问于 2018-12-20 18:11:14
回答 1查看 6.6K关注 0票数 14

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

理想的做法是使用pub_struct宏:

代码语言:javascript
运行
复制
pub_struct! Foo {
    a: i32,
    b: f64,
    // ...
}

这相当于:

代码语言:javascript
运行
复制
pub struct Foo {
    pub a: i32,
    pub b: f64,
    //...
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-20 21:30:56

代码语言:javascript
运行
复制
macro_rules! pub_struct {
    ($name:ident {$($field:ident: $t:ty,)*}) => {
        #[derive(Debug, Clone, PartialEq)] // ewww
        pub struct $name {
            $(pub $field: $t),*
        }
    }
}

不幸的是,derive可能只适用于结构、枚举和联合,所以我不知道如何将它们提升到调用方。

用法:

代码语言:javascript
运行
复制
pub_struct!(Foo {
    a: i32,
    b: f64,
});

如果我不需要括号和分号,比如Rust支持阅读器宏,那就更好了。

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53866508

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档