1
std :: ptr :: writeは、書き込むバイトの「初期化されていない状態」を転送しますか?
FFIの境界を越えてポインターサイズのintに収まるトランザクション型を支援するライブラリを開発しています。次のような構造体があるとします。 use std::mem::{size_of, align_of}; struct PaddingDemo { data: u8, force_pad: [usize; 0] } assert_eq!(size_of::<PaddingDemo>(), size_of::<usize>()); assert_eq!(align_of::<PaddingDemo>(), align_of::<usize>()); この構造体には、1データバイトと7パディングバイトがあります。この構造体のインスタンスをaにパックしusize、FFI境界の反対側でアンパックします。このライブラリーは汎用なので、私はMaybeUninitand を使用していptr::writeます: use std::ptr; use std::mem::MaybeUninit; let data = PaddingDemo { data: 12, force_pad: [] }; // In order to ensure all the bytes are initialized, // zero-initialize the buffer let mut packed: …