如何在元组的变量索引处访问元素?

Rak*_*111 3 rust

我正在编写一个从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为一个元组展开带有变量索引的循环,如果它确实是非常必要的话.

如果您打算使用需要变量索引的同构元组,为什么不使用固定长度的数组呢?


fjh*_*fjh 6

那么,有没有办法获得vec的第i个值?

不,没有.由于元组可以包含不同类型的元素,因此像这样的表达式通常不具有静态已知类型.

您可以考虑使用数组而不是元组.