Как говорит вам компилятор (вычистил):
предел черты Take<...>: DoubleEndedIterator
не удовлетворен
Iterator::Rev
isреализуется только тогда, когда базовый тип реализует DoubleEndedIterator
:
fn rev(self) -> Rev<Self>
where
Self: DoubleEndedIterator,
Take
не реализует DoubleEndedIterator
, поэтому вы не можете вызвать rev
для него.
Я бы просто нарезал его:
let items = [1, 2, 3, 4, 5, 6, 7, 8, 9];
let last_2 = &items[items.len() - 2..];
assert_eq!(last_2, [8, 9]);