Как получить фрагмент, содержащий все элементы, кроме N-го?
Я хотел бы получить фрагмент ссылок из вектора, который содержит все, кроме N
й элемент. В моем конкретном случае мне нужна изменяемая ссылка на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]
Есть ли какая-нибудь библиотека или более чистый код, который может это сделать?
Для справки: намерение состоит в том, чтобы изменить положение объекта по отношению ко всем другим объектам. Цикл действует как базовая система обнаружения столкновений в игре.