Переместить только первый элемент из GenericArray - PullRequest
0 голосов
/ 02 сентября 2018

У меня есть функция, подпись которой в ржавчине следующая:

pub fn get_rand_pose<num>() -> GenericArray<ElemType, num>
where num: ArrayLength<ElemType> + typenum::marker_traits::Unsigned;

Затем я хочу использовать только первый элемент возвращаемого значения и передать его другой функции, например, как:

let p = get_rand_pose::<typenum::U1>()[0];
other_fun(0, 1, p);

Предыдущий пример не компилируется. Я получаю следующее сообщение об ошибке:

cannot move out of here
help: consider using a reference instead

Мне нужно предоставить фактическое значение other_fun вместо ссылки, поэтому предложение здесь не годится.

Что я сделал, чтобы решить эту проблему, так это использовал into_iter().next().unwrap(), который выполняет свою работу, но мне интересно, насколько он эффективен и является ли это рекомендуемым решением для этой проблемы.

Я не хочу создавать дополнительные копии ни GenericArray, ни первого элемента, я просто хочу взять и использовать его первый элемент и забыть об остальной части массива. Как бы я это сделал?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...