タグ

ブックマーク / qiita.com/aobat (1)

  • ニッチなRustのNicheについて - Qiita

    u8 no: 1 opt: 2 opt2:2 core::num::nonzero::NonZeroU8 no: 1 opt: 1 opt2:2 alloc::string::String no: 24 opt: 24 opt2:32 Optionが増えているのにsizeが変わっていないことがある! これはRustのniche optimizationが働いているからである。 niche nicheとはもともと「隙間」という意味がある。 Rustはその「隙間」を検知してその間に情報を埋めることができる。 例えばNonZeroU8という型がある。 その名の通り、「ゼロにならないu8」な型である。 ゼロにならないのは(unsafeを使わない限り)保証されているので、この型には0という隙間がある。 つまりNoneという情報をその0に埋めてしまえばいいということだ。 メモリ上の表現として 0ならN

    ニッチなRustのNicheについて - Qiita
  • 1