【发布时间】:2022-12-22 07:21:39
【问题描述】:
在 javascript 中,我可以通过以下方式解构数组:
const [first, second, ...rest] = myArray
有没有类似的方法可以在生锈中实现这一点?
如果我只想要一个元素,那很容易。我可以:
let first = my_vec[0]
或者如果我从一个字符串创建一个数组并且只想将我拆分一次,分成两部分我可以这样做并得到一个元组:
let (first, second) = my_string.split_once("\n").unwrap();(如果我只需要将数组分成两部分)
但是,更通用的解构模式又如何呢?在这种模式中,我可以忽略数组的某些部分并定义一些变量并准备好使用?
我期待它看起来像这样:
let [first, second, ...] = my_vec;
或者
let [first, ..middle, second_last, last] = my_vec;
P.S 忘记 unwrap 部分。我知道我应该处理这个错误,但这不是这里的重点。
我尝试使用匹配表达式,但没有用。它期望数组的长度为 2。
let [first, second] = match my_vec[..] {
[first, second] => [first, second],
v => v,
};
我抱怨v并说: `match` arms have incompatible types expected array `[&str; 2]`, found slice `[&str]。
这是有道理的,那么有没有办法实现这一目标?
【问题讨论】:
标签: arrays rust vec destructure