История изменений
Исправление DarkEld3r, (текущая версия) :
Влом разбираться как лучше такое с мутабельной ссылкой сделать, но думаю такой вариант устроит:
fn shift<C, T, It>(v: C) -> C
where C: IntoIterator<Item = T, IntoIter = It> + FromIterator<T>,
It: DoubleEndedIterator<Item = T> {
C::from_iter(v.into_iter().rev())
}
let b = shift(vec![2, 3, 4]);
println!("{:?}", b);
Исходная версия DarkEld3r, :
Влом разбираться как лучше такое с мутабельной ссылок сделать, но думаю такой вариант устроит:
fn shift<C, T, It>(v: C) -> C
where C: IntoIterator<Item = T, IntoIter = It> + FromIterator<T>,
It: DoubleEndedIterator<Item = T> {
C::from_iter(v.into_iter().rev())
}
let b = shift(vec![2, 3, 4]);
println!("{:?}", b);