tgoop.com/dereference_pointer_there/8577
Last Update:
▪️Кстати, насчёт паник: вывод паник (по крайней мере, с panic hook по умолчанию) теперь предотвращает перемешивание вывода, если паникуют несколько потоков одновременно.
▪️Ещё касательно паник: PanicInfo
разделили на два типа. Первый, в core, используется как аргумент в #[panic_handler]
(вне #![no_std]
не актуально), а второй, в std (переименованный в PanicHookInfo
) как аргумент для хука паники. Как пишет Мара Бос:
is used in two ways:
PanicInfo
As argument to the #[panic_handler]
in no_std
context.
As argument to the panic hook in std context.
In situation 1, the PanicInfo
always has a message (of type fmt::Arguments
), but never a payload (of type &dyn Any
).
In situation 2, the PanicInfo
always has a payload (which is often a String
), but not always a message.
...
I don't see any good reasons for these to be the same type, other than historical reasons.
Как следствие, std::panic::PanicInfo
теперь является алиасом (с #[deprecated]
) на PanicHookInfo
.
▪️И ещё насчёт паник: PanicInfo
(который в core) обзавёлся новым методом message, который возвращает новый тип PanicMessage, реализующий Display
. Да, сейчас это тонкая обёртка над fmt::Arguments.
▪️Стабилизировали новые API, в том числе:
🔸 core::error. Да, само по себе это не новое API, но трейт Error
теперь можно использовать в #![no_std]
🔸hint::assert_unchecked — вызывает UB, если аргумент является false
. Может быть полезно для того, чтобы сообщать оптимизатору инварианты, которые компилятор сам не выводит.
🔸fs::exists — фактически алиас для Path::try_exists, не переводит ошибки в false
.
🔸AtomicBool::fetch_not
🔸Duration::abs_diff
В const-контексте теперь можно вызывать:
🔸char::from_u32_unchecked
(и метод, и функцию в core::char
)
🔸CStr::{
count_bytes,
from_ptr}
BY Блог*
Share with your friend now:
tgoop.com/dereference_pointer_there/8577