Как получить фрагмент, содержащий все элементы, кроме N-го?

Я хотел бы получить фрагмент ссылок из вектора, который содержит все, кроме Nй элемент. В моем конкретном случае мне нужна изменяемая ссылка наNth элемент и неизменяемые ссылки на все остальные элементы.

У меня есть кое-что, что работает, но это приводит к некоторому беспорядку в коде.

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]

Есть ли какая-нибудь библиотека или более чистый код, который может это сделать?

Для справки: намерение состоит в том, чтобы изменить положение объекта по отношению ко всем другим объектам. Цикл действует как базовая система обнаружения столкновений в игре.

0 ответов

Другие вопросы по тегам