Ітератор

Трейт Iterator підтримує ітерацію над значеннями у колекції. Він вимагає наявності методу next і надає багато методів. Багато стандартних бібліотечних типів реалізують Iterator, і ви також можете реалізувати його самостійно:

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Speaker Notes

This slide should take about 5 minutes.
  • Трейт Iterator реалізує багато поширених функціональних операцій програмування над колекціями (наприклад, map, filter, reduce і т.д.). Це цій трейт, де ви можете знайти всю документацію про них. У Rust ці функції мають створювати код, який є настільки ж ефективним, як і еквівалентні імперативні реалізації.

  • IntoIterator — це трейт, яка забезпечує роботу циклів for. Він реалізований такими типами колекцій, як Vec<T>, і посиланнями на них, наприклад &Vec<T> і &[T]. Діапазони також реалізують його. Ось чому ви можете перебирати вектор з for i in some_vec { .. }, але some_vec.next() не існує.