gpt4 book ai didi

struct - 如何在不为每个字段重复 `pub` 的情况下创建所有字段都是公共(public)的公共(public)结构?

转载 作者:行者123 更新时间:2023-11-29 08:35:52 25 4
gpt4 key购买 nike

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

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 可能只适用于结构、枚举和联合,所以我不知道如何将它们提升给调用者。

用法:

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

如果我不需要括号和分号就好了,也就是说,如果 Rust 支持读取器宏。

关于struct - 如何在不为每个字段重复 `pub` 的情况下创建所有字段都是公共(public)的公共(public)结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53866508/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com