在javascript中,我可以用下面的方法来解构一个数组:
第一个月
有没有类似的方法来实现这一点在生 rust ?
如果我只想要一种元素,那很简单。我可以做到:let first = my_vec[0]
或者如果我用一个字符串创建一个数组,只想把i拆分一次,拆分成两部分,得到一个元组:let (first, second) = my_string.split_once("\n").unwrap();
(如果我只需要将数组拆分为两部分)
但是更一般的解构模式怎么样呢?在这种模式中,我可以忽略数组的一部分,定义一些变量并准备好使用。
我希望它看起来像这样:let [first, second, ...] = my_vec;
或let [first, ..middle, second_last, last] = my_vec;
忘了unwrap
部分吧。我知道我应该处理这个错误,但这不是重点。
我尝试使用匹配表达式,但不起作用。它要求数组的长度为2。
let [first, second] = match my_vec[..] {
[first, second] => [first, second],
v => v,
};
我抱怨v
并说:``matcharms have incompatible types expected array
[&str; 2], found slice
[&str]` .这是有道理的,那么有没有办法实现呢?
2条答案
按热度按时间nqwrtyyt1#
好的,我在rust中找到了一个从数组(vec)中反结构任意项的方法。它并不完美。如果索引不反弹,程序会崩溃。
第一个月
我还发现你可以做字符串切片,但据我所知,我只能取范围,而不能挑选,至少不能不冗长和复杂。
let [first, second, third]: &[_; 3] = my_vec[..3].try_into().unwrap();
holgip5t2#
您可以使用
match
和以下模式。以绑定first and last values, and store the rest of them in a single array(
middle
)。即,
这将导致以下输出。
您也可以使用
if let
syntax.