有时我喜欢在函数中分组相关变量,而不声明新的 struct 类型.
在C中,可以这样做,例如:
void my_function() {
struct {
int x, y;
size_t size;
} foo = {1, 1, 0};
// ....
}
有没有办法在Rust 的地方做到这一点?如果不是,最接近的类似功能是什么?
有时我喜欢在函数中分组相关变量,而不声明新的 struct 类型.
在C中,可以这样做,例如:
void my_function() {
struct {
int x, y;
size_t size;
} foo = {1, 1, 0};
// ....
}
有没有办法在Rust 的地方做到这一点?如果不是,最接近的类似功能是什么?
虽然不支持anonymous个 struct ,但您可以在本地对其进行范围限定,以便几乎完全按照您在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);
}