我正在尝试将元组分解为变量,然后由于错误地提及其中一种类型而导致错误:
fn main() {
let tup = (500, 6.4, 1);
let (x: bool, y: f32, z: i16) = tup;
println!("{}, {}, {}", x, y, z);
}
我的想法是,编译器会引发错误,因为 x
被指定为 bool
但正在与 500
匹配。令人惊讶的是,这是编译器提示的最后一条语句,说在此范围内找不到 x、y 和 z:
我尝试了另一种方式:
fn main() {
let tup = (500, 6.4, 1);
let mut x: bool = true;
let mut y: f32 = true;
let mut z: i16 = true;
(x, y, z) = tup;
println!("{}, {}, {}", x, y, z);
}
这一次,编译器确实引发了预期的错误,但它也指出 (x, y, z) = tup;
的左侧无效。有人可以解释发生了什么吗?
最佳答案
关于types - 如何将元组解构为类型变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47667195/