エントリーの編集
エントリーの編集は全ユーザーに共通の機能です。
必ずガイドラインを一読の上ご利用ください。
エントリーの編集は全ユーザーに共通の機能です。
必ずガイドラインを一読の上ご利用ください。
注目コメント算出アルゴリズムの一部にLINEヤフー株式会社の「建設的コメント順位付けモデルAPI」を使用しています
概要: RustのNULLポインタ最適化について説明する。 NULLポインタ最適化とは 以下のようにポインタ型のO... 概要: RustのNULLポインタ最適化について説明する。 NULLポインタ最適化とは 以下のようにポインタ型のOptionが、元のポインタと同じサイズになる最適化である。NULLをNoneに割り当てている。 fn main() { println!("{}", std::mem::size_of::<Box<u32>>()); // 8 println!("{}", std::mem::size_of::<Option<Box<u32>>>()); // 8 } non-zero typeの定義 NULLポインタ最適化は、non-zero typeをoption-like typeで包んだ場合に発生する。以下が1.17.0時点でのnon-zero typeの定義である。 関数ポインタ 参照 (fat pointerも含む) Box<T> (fat pointerも含む) NonZero<