是否有一个范围表达式可以用于引用切片的最后N个元素



我有一个长度未知的切片,我想尝试获取该切片的最后N个元素的切片。我能想到的唯一方法如下(例如,对于4个元素(:

if let [.., a, b, c, d] = my_slice {
//...
}

不过这感觉很麻烦。我本以为其中一个范围表达式会提供这种功能,但它们似乎都没有……还有其他方法吗?理想情况下,我可以使用切片,而不是上面例子中的单个值a、b、c、d。

我喜欢您的解决方案,但您可以使用get。一个简单的版本如下:

fn last4<T>(slc: &[T]) -> Option<&[T]> {
slc.get(slc.len()-4..slc.len())
}

在实践中,您需要检查slc.len()是否至少为4。

在行动中看到它:https://play.rust-lang.org/?version=stable&mode=调试&edition=2018&gist=2c9472aea45cf23b1f46b54de7132cd7。

最新更新