我正在编写一个从stdin读取向量的函数,这是我到目前为止的内容:
fn read_vector() -> (i64, i64, i64) {
let mut vec = (0, 0, 0);
let mut value = String::new();
for i in 0..3 {
io::stdin().read_line(&mut value).expect("Failed to read line");
vec.i = value.trim().parse().expect("Failed to read number!"); // error!
}
}
Run Code Online (Sandbox Code Playgroud)
但是,带注释的行包含错误:
error: no field `i` on type `({integer}, {integer}, {integer})`
--> src/main.rs:13:13
|
13 | vec.i = value.trim().parse().expect("Failed to read number!");
| ^
Run Code Online (Sandbox Code Playgroud)
阅读文档条目不会显示任何get或类似的功能.
那么,有没有办法获得i元组的价值?
Evi*_*Tak 11
没有内置在语言的方式,因为对一个变量索引异构型像tuple使它不可能让编译器推断表达式的类型.
你可以使用一个宏来for为一个元组展开带有变量索引的循环,如果它确实是非常必要的话.
如果您打算使用需要变量索引的同构元组,为什么不使用固定长度的数组呢?