如何在不为每个字段重复 `pub` 的情况下创建一个 public 结构,其中所有字段都是 public?
How to make a public struct where all fields are public without repeating `pub` for every field?
如何在 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 支持 reader 宏。
如何在 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 支持 reader 宏。