= MaybeUninit::<u8>::uninit();
unsafe {
*uninit.as_mut_ptr() = 1;
}
}
UB or not UB? That's the question
why yes?
Разыменовывается указатель на невалидный примитивный тип
здесь такого кстати нет вроде https://doc.rust-lang.org/reference/behavior-considered-undefined.html
A reference or Box<T> that is dangling, unaligned, or points to an invalid value.
а где ссылка создаётся?
При разыменовании указателя
Вопрос исключительно про оператор звездочка. Для uninit.as_mut_ptr().write(1) УБ вроде как отсутсвует.
нет
с чего это ub, как вообще тогда что то проиницализировать?
Вообще я так понимаю все наверное в это упирается в данном случае https://github.com/rust-lang/unsafe-code-guidelines/issues/71
А еще в validity of references
Откуда там ссылка?
Ну возможно и нигде, но что-то типо lvalue там же есть
Обсуждают сегодня