我有一个长度未知的切片,我想尝试获取该切片的最后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。