Мининовости
Мелкие изменения: стабилизация API, новые методы и impl, правки Cargo.
Метод Vec::try_remove теперь стабилен. Он удаляет элемент по индексу и возвращает Option<T>: None, если индекса нет. Раньше для этого приходилось вручную проверять границы и вызывать remove.
Complex<f32> и Complex<f64> теперь поддерживают умножение и деление: друг на друга и на вещественное число. Раньше это приходилось писать вручную.
Добавлены реализации From<&NonZero<T>> для &T — для всех целочисленных типов, usize, isize и char. Теперь ссылку на NonZero можно получить из ссылки на само значение через ::into().
Методы funnel_shl и funnel_shr стабилизированы для всех беззнаковых целых, вместе с const-формами и unsafe-версиями unchecked_funnel_shl / unchecked_funnel_shr.
Реализован PartialEq<VecDeque<U>> для Vec<T>, &[T], &mut [T], [T; N], &[T; N] и &mut [T; N]. Теперь vec_deque == slice компилируется без ручного преобразования.
Функция unsafe fn conjure_zst::<T>() -> T теперь стабильна. Она создаёт значение типа T без единого байта, пригодное для целей, где нужно «занять» тип в памяти.
В макросе thread_local! разрешено опускать 'static в lifetimes и на всех платформах, а не только при const-инициализаторе. Раньше сокращение работало лишь в этом узком случае.
core::sync::SyncView теперь стабилен. Это обёртка, которая даёт объекту Sync, но предоставляет к нему только изменяемый доступ. Она нужна, чтобы передавать Send-но-не-Sync значения между потоками.
Исправлена ложная диагностика: Cargo больше не сообщает о неиспользуемых обычных зависимостях в случаях, когда статические библиотеки пропускаются. Закрывает cargo#17501.
В Cargo.toml добавлена разметка зависимостей как встроенных — builtin = true. На данный момент это паникует: возможность включена только под фичей builtin-dependencies и нужна как основа для cargo#16960.
Часть фичи allocator_api стабилизирована: трейт Allocator из core::alloc теперь доступен без nightly. Остаток фичи переименован в allocator_ext.
Метод Box::take теперь стабилен. Он работает как Option::take, но для Box: освобождает ячейку, подставляет новое значение и возвращает старое — без нового выделения памяти.
Операции сравнения для строк, строк в представлении C, байтовых строк и места в коде стали работать на этапе компиляции.
У дескриптора каталога появился метод получения второго независимого дескриптора на тот же каталог. Метод был задуман давно, но при его реализации утрачен.
Появились методы, которые срезают заданный префикс или суффикс, если он действительно на месте. До этого для строк существовал способ заменить только первое вхождение, а срез по краям приходилось писать вручную.