用rust写一个宏用来实现在结构体中定义公共变量
时间: 2024-05-14 15:14:01 浏览: 162
以下是一个使用Rust编写的宏示例,用于在结构体中定义公共变量:
```rust
macro_rules! define_struct {
($name:ident { $($field:ident : $type:ty),* $(,)* }) => {
struct $name {
$($field : $type),*
}
impl $name {
$(fn $field(&self) -> &$type {
&self.$field
})*
}
};
}
define_struct!(Person {
name: String,
age: i32,
});
fn main() {
let person = Person {
name: "John".to_string(),
age: 30,
};
println!("{} is {} years old.", person.name(), person.age());
}
```
在上述代码中,我们定义了一个名为`define_struct`的宏,该宏接受一个结构体名称和其包含的字段列表作为参数。宏使用Rust的结构体定义语法来定义结构体,并使用impl块为每个字段生成一个getter函数。在main函数中,我们创建了一个名为`person`的Person实例,并使用其getter函数打印了其名称和年龄。
阅读全文