rust - 是否存在可用于引用切片的最后 N 个元素的范围表达式?

标签 rust

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

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

虽然这感觉很麻烦。我本以为 range expressions 之一会提供这个功能,但他们似乎都没有这样做......还有另一种方法吗?理想情况下,我将能够使用切片而不是上面示例中的单个值 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=debug&edition=2018&gist=2c9472aea45cf23b1f46b54de7132cd7 .

关于rust - 是否存在可用于引用切片的最后 N 个元素的范围表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64116761/

相关文章:

rust - 在特征对象上使用回调

rust - 将 Option 实例从 Some 设置为 None 会触发删除内部值吗?

rust - 如何将Rc <RefCell <dyn io::Write >>转换为具体类型?

rust - 除了 Rust 标准库之外,是否还有 Sync 特征的有效实现?

rust - 引用生命周期与相同生命周期范围冲突

methods - 结构方法的Rust生命周期推断

rust - Rust 标准库有 Min/Max 特性吗?

performance - 我应该如何有效地初始化 `Arc<[u8; 65536]>`?

json - 如何使用 Serde 从 JSON 命名值而不是数组中(反)序列化元组结构?

rust - 是否保证在升级弱引用之前调用 Arc 的析构函数将返回 None?