是否有可能在Rust中声明本地匿名结构?
问题描述:
有时我喜欢在函数中将相关变量分组,而不声明新的结构类型。是否有可能在Rust中声明本地匿名结构?
在C可以做到这一点,例如:
void my_function() {
struct {
int x, y;
size_t size;
} foo = {1, 1, 0};
// ....
}
有没有办法在鲁斯特做到这一点?如果不是,那么最接近的等效物是什么?
答
虽然匿名结构不支持,你可以范围至本地,做你的C版所描述的几乎一模一样:
fn main() {
struct Example<'a> {
name: &'a str
};
let obj = Example { name: "Simon" };
let obj2 = Example { name: "ideasman42" };
println!("{}", obj.name); // Simon
println!("{}", obj2.name); // ideasman42
}
另外一个选择是一个元组:
fn main() {
let obj = (1, 0, 1);
println!("{}", obj.0);
println!("{}", obj.1);
println!("{}", obj.2);
}
感谢编辑@Shepmaster - 我真的应该提高我的答案的质量。 –
哈哈,这个答案看起来很适合我!不知道你会缺少什么质量;-) – Shepmaster