首页 > 解决方案 > 如何获得包含除第 N 个元素之外的所有元素的切片?

问题描述

我想从包含除N第 th 元素之外的所有元素的向量中获取引用片段。在我的具体情况下,我想要对N第 th 个元素的可变引用和对所有其他元素的非可变引用。

我有一些有用的东西,但它会导致一些混乱的代码。

let len = vector.len();
for index in 0..len {
    let (before, after_inclusive) = vector.split_at_mut(index);
    let (element_slice, after) = after_inclusive.split_at_mut(1);
    let element = &mut element_slice[0];
    let others = [before, after].concat();
    element.operation(&others);
}

理想情况下,我想要一个像这样工作的函数:

let (element, others) = vector.extract_split(index);

或者也许是一些模式高级切片语法:

let others = vector[0..index, (index+1)..len]

是否有一些库或更简洁的代码可以做到这一点?

作为参考,目的是修改一个对象相对于所有其他对象的位置。循环充当游戏中的基本碰撞检测系统。

标签: rustslicevec

解决方案


推荐阅读