
Size: a a a
"a"
? Проще простого!&mut T
, где левый аргумент — это элемент, который находится правее, а правый аргумент — это аргумент, который находится левее (если считать, что элементы в векторе расположены слева направо). Да, это написано в документации, но кто ж её читает...#[track_caller]
(кстати, когда его только предлагали, он назывался blame_caller), который позволяет функции узнать информацию о месте, в котором она была вызвана (ну, почти: месте вызова выше по стеку в первой функции в стеке без этого атрибута). Эта информация предоставляется при помощи магического конструктора std::panic::Location::caller, который возвращает &'static Location<'static>
, и, как показывает пример из документации к конструктору, у Location
есть геттеры, покрывающие функционал вышеуказанных макросов. Таким образом, ничто не мешает написать свой, скажем, line!
, который будет разворачиваться в ::core::panic::Location::caller().line()
.impl<A, E, V: FromIterator<A>> FromIterator<Result<A, E>> for Result<V, E>
, которая позволяет при помощи .collect()
собирать итератор результатов в результат с коллекцией или с первой ошибкой. Почему-то несколько менее известен тот факт, что для Option
есть аналогичный impl со схожей семантикой.