我正在尝试找到一种有效的方法来解构 Rust 中的向量。将索引上的值分配给相应的变量。我已经浏览了文档但无法找到答案。
let (frequency, samplingrate, samples, slope, duration, steps) = (input[0], input[1], input[2], input[3], input[4], input[5]);
Run Code Online (Sandbox Code Playgroud)
Pit*_*taJ 10
Rust 的名称是切片模式。
但切片模式的使用不能无可辩驳,除非用于数组。也就是说,你不能只做这样的事情:
let [a, b, c] = v[..3];
Run Code Online (Sandbox Code Playgroud)
因为编译器无法证明生成的切片的长度是 3 个元素,尽管这对我们来说可能是显而易见的。
相反,您需要告诉编译器将给定的切片转换为数组,如下所示:
let [a, b, c]: &[_; 3] = v[..3].try_into().unwrap();
Run Code Online (Sandbox Code Playgroud)
因为数组大小在编译时已知,所以编译器可以证明这样的操作是万无一失的。
对于您的情况,代码应如下所示:
let [frequency, samplingrate, samples, slope, duration, steps]: &[_; 6] = input[..6].try_into().unwrap();
Run Code Online (Sandbox Code Playgroud)