Мининовости
Мелкие изменения: стабилизация API, новые методы и impl, правки Cargo.
У Option появился метод reduce: он сворачивает итератор в единственное значение, если условие совпало ровно один раз. Если ни разу — результат отсутствует; если больше одного — возвращается None.
Опубликован разбор самодельного эмулятора aarch64: инструкции ARM64 во время работы транслируются в машинный код процессора, на котором запущен эмулятор.
Еженедельный отчёт о производительности компилятора Rust. Разбор сделал @panstromek.
Опубликован разбор неочевидных мест в Pest — генераторе парсеров. Автор собрал случаи, где результат не совпадает с ожиданием, и объяснил причину каждого.
Опубликован разбор приёма, который уменьшает размер программы: вместо целого значения, по которому различают варианты, используется отдельный тип на каждый вариант.
Открыты два новых предложения: автоматическое применение Auto-реализаций к типам с supertrait и атрибут для генерации атрибутов кода. Оба пока обсуждаются.
Реализована фича nonpoison_rwlock: появился RwLock, который не помечается отравленным после паники. Это продолжение работы над незапирающимися блокировками, начатой месяцем ранее.
Начата работа над трейтом Reborrow — нестабильной идеей явного повторного заимствования. Идея описывает один из способов упростить работу с временами жизни, но пока это только первый шаг.
Стабилизирован метод array::each_ref в константном контексте. Теперь набор ссылок на элементы массива можно получить во время компиляции.
В вариантах min_by, max_by и minmax_by перепутан порядок аргументов функции сравнения. При асимметричном сравнении это давало неверный результат.
Стабилизирована фича const_pathbuf_osstring_new: конструкторы PathBuf::new и OsString::new теперь доступны в константном контексте.
Стабилизированы конструкторы Ipv4Addr::from_octets, Ipv6Addr::from_octets и Ipv6Addr::from_segments. Все три работают в константном контексте.
Добавлена нестабильная фича -Zbuild-dir-new-layout. Она готовит новое расположение артефактов внутри каталога сборки; реализация обещана отдельным изменением.
Реализована подстановка host в описаниях целей. Теперь можно указать host вместо тройки и получить цель текущей машины — полезно для процедурных сборщиков и инструментов, которые работают на любой платформе.
Еженедельный отчёт о производительности компилятора Rust. Разбор сделал @simulacrum.