首页 > 解决方案 > 是否有一个范围表达式可用于引用切片的最后 N 个元素?

问题描述

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

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

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

标签: rust

解决方案


我喜欢你的解决方案,但你可以使用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=debug&edition=2018&gist=2c9472aea45cf23b1f46b54de7132cd7 。


推荐阅读