-> &CStr {
unsafe { &*(bytes as *const [u8] as *const CStr) }
}
как указатель на [u8] потом превращается в ссылку на объект CStr?
Сам CStr содержит в себе поле inner: [c_char], а c_char уже либо i8, либо u8 и т.д.
CStr случайно не repr(transparent)?
нет, что и удивило, но есть коммент: // When attribute privacy is implemented, CStr should be annotated as #[repr(transparent)]. // Anyway, CStr representation and layout are considered implementation detail, are // not documented and must not be relied upon.
А ну и это же UB? Или с одним полем оно так не работает?
но коммент написан не к структуре-кортежу
спс, с этим уже разобрался)
*const [u8] это тонкий указатель же. там только ссылка без длины
ссылка без длины была бы *const u8
а как оно выглядит в памяти?
спасибо
Обсуждают сегодня