LINUX.ORG.RU

История изменений

Исправление 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);