
C++20: удивить линкер четырьмя строчками кода — или сказ о том, как код студента вскрыл ошибку в компиляторе.
Size: a a a







match нет недостижимых ветвей и как он проверяет, что в match рассмотрены все возможные варианты (спойлер: вторая задача сводится к первой путём добавления _).
::<>) можно воткнуть практически везде:fn fishy() {
assert_eq!(String::from("><>"),
String::<>::from::<>("><>").chars::<>().rev::<>().collect::<String>());
}

match result {
Ok(Some(1 | 2)) => { .. }
Err(MyError { kind: FileNotFound | PermissionDenied, .. }) => { .. }
_ => { .. }
}
Готов поспорить, через несколько релизов растоманы будут удивляться, как они раньше без этого жили (как раньше жили без pattern match ergonomics).for x in [1, 2, 3] вместо жутко многословного с array::IntoIter::new. Но есть один нюанс: вызов .into_iter() на массиве всё ещё возвращает итератор, возвращающий ссылки на элементы, как и раньше — и это при том, что IntoIter::into_iter(array) работает нормально. Как и ожидалось, это поведение реализовано при помощи чудовищного костыля: трейт IntoIterator помечен (именно сам трейт, а не его реализация для массива) помечен специально созданным для этого атрибутом #[rustc_skip_array_during_method_dispatch] с названием, которое говорит само за себя. И, более, этот атрибут работает (точнее, планируется) только в edition-ах ниже 2021. Хороший пример того, как обратная совместимость заставляет принимать отвратительные технические решения.cmp наконец-то добавлены функции {min, max}_by{, _key}. Не самая часто нужная вещь, но ранее, когда она требовалось, отсутствие этого функционала вызывало недоумение.BTreeMap и BTreeSet получили по методу retain, которые удаляют из коллекций элементы, которые не удовлетворяют переданному предикату. Опять-таки, отсутствие этого метода до этих самых выглядело странно с учётом того, что аналогичный метод на векторе был с самой первой версии, а у HashMap и HashSet — с версии 1.18.Option::insert замещает значение в Option и возвращает ссылку на него, и, в отличие от Option::get_or_insert, делает это безусловно, а не только при отсутствующем значении.{integer}::BITS у всех примитивных численных типов. Минус строчки с mem::size_of::<type>() * 8.



mod a {
use self::super::a::{self};
}
document.getElementsByTagName("video")[0].playbackRate = 3