Rust用了宏之后,数据初始化可以省很多不必要的部件,只填字符串、数字和逗号就行了。
C++23也能这样初始化,但需要一个可变参数模版,我在编程技术版贴过一个,要比Rust的宏多写几行。
struct Person(String, u32);
impl Person {
fn greet(&self) {
println!("Hello, I'm {} and I'm {} years old.", self.0, self.1);
}
}
macro_rules! folks {
($($name:expr, $age:expr),* $(,)?) => {
vec![$(Person($name.to_string(), $age)),*]
};
}
fn main() {
let people = folks![
"Alice", 25,
"Bob", 30,
"Charlie", 35,
];
for person in &people {
person.greet();
}
}
--
FROM 171.213.181.*