Релиз Rust 1.53.0 — долгожданный IntoIterator для массивов и множество других новых нововведений языка

Обновление получилось и вправду интересным.
1

В официальном блоге языка Rust появилась запись о релизе свежей версии под номером 1.53.0. По словам самих разработчиков, в ней они решили сконцентрироваться на добавлении нескольких новых языковых функций и множества новых функций библиотеки.

IntoIterator для массивов

«Звездой» апдейта стала возможность перебора массивов по значению через цикл for:

for i in [1, 2, 3] {
    ..
}

Ранее это работало лишь через конструкции вида &[1, 2, 3] или [1, 2, 3].iter().

Вместе с тем теперь Rust-разработчики могут передавать массивы методам, ожидающим T: IntoIterator:

let set = BTreeSet::from_iter([1, 2, 3]);
for (a, b) in some_iterator.chain([1]).zip([1, 2, 3]) {
    ..
}

Unicode-идентификаторы

Теперь идентификаторы могут содержать символы, отличные от ascii. Например, можно использовать Unicode-символы, определённые в UAX # 31. Правда, есть и ограничение — эмодзи всё ещё запрещены.

Стабилизировали ряд API

В числе доработанных методов и трейтов оказались:

  • array::from_ref
  • array::from_mut
  • AtomicBool::fetch_update
  • AtomicPtr::fetch_update
  • BTreeSet::retain
  • BTreeMap::retain
  • BufReader::seek_relative
  • cmp::min_by
  • cmp::min_by_key
  • cmp::max_by
  • cmp::max_by_key
  • DebugStruct::finish_non_exhaustive
  • Duration::ZERO
  • Duration::MAX
  • Duration::is_zero
  • Duration::saturating_add
  • Duration::saturating_sub
  • Duration::saturating_mul

и множество других.

Что думаете?