目次

Rustの勉強[高度な型 その4]

ぎじゅつ

はじめに

#

NO IMAGEThe Rust Programming Language 日本語版 - The Rust Programming Language 日本語版
を読んでいる

  • SF6の大型大会前なのにRustの勉強をしている
  • やらないと落ち着かないので習慣化できたらしい

お勉強

#

NO IMAGE高度な型 - The Rust Programming Language 日本語版

  • ここから

メモ

#

時としてDSTやサイズなし型とも称され、これらの型により、実行時にしかサイズを知ることのできない値を使用するコードを書かせてくれます。

  • ここに書いてあったわ
// こんにちは
let s1: str = "Hello there!";
// 調子はどう?
let s2: str = "How's it going?";

Rustでこのコードを書くことが許容されたら、これら2つのstr値は、同じ量のスペースを消費する必要があったでしょう。
ですが、長さが異なります: s1は、12バイトのストレージが必要で、s2は15バイトです。このため、動的サイズ決定型を保持する変数を生成することはできないのです

  • あれ。そうなんだっけ

  • 細かいところ忘れているな

  • じゃあこれいけないの?

    • let s: Box<str> = "Hello there!";
  • let s: strがそもそも書けないのか

  • そもそも解釈を間違えていた

    • 実態をstrとして表現しているだけで使える場面は以下
      • Box<str>
      • &str

strを全ての種類のポインタと組み合わせられます: 例を挙げれば、Box<str>Rc<str>などです。
実際、これまでに見かけましたが、異なる動的サイズ決定型でした: トレイトです。全てのトレイトは、トレイト名を使用して参照できる動的サイズ決定型です。

  • 先走ったけどあったわ

まとめ

#
  • 文字列のstrって理解できなかったがわかってきた

    • ポインタの解像度のおかげ
  • 文字列を理解できていなかったから勉強になっている

  • やっぱりいったん抜かして戻ると解像度相当上がるね

    • ポインタ絡みがまったくわからなかったので助かっている
  • ここはせっかくなのでじっくりやろう

  • 次はここ

NO IMAGE高度な型 - The Rust Programming Language 日本語版

蛇足

#
  • 余談として今静かな環境で勉強しているけどめっちゃ捗るな
  • これを維持したほうがいいなー