目次

Rustの勉強[Box<T> その2]

ぎじゅつ

はじめに

#

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

お勉強

#

NO IMAGEヒープのデータを指すBox<T>を使用する - The Rust Programming Language 日本語版
をやる

  • 休日試した電車勉強を出勤でやってみる

メモ

#
  • 光らなさすぎて再帰的なことという認識しかない
    • と思ったら非再帰がでてきてしまった

コンパイラはCons列挙子を見ることから始めます。

  • Cons抜かしたので何を言っているかわからなかったので終わった

    • 調べ直す
  • そうだそうだ、中身が無限に続くやつね

  • あーだから再帰的なのか

  • サイズを決めようとした時に再帰的になり無限ループが起きるところまで理解

  • とりあえず予測する計算に無限ループが起きることを理解した

再帰的に定義された型に必要なメモリ量を計算できないので

  • 多分これがすべてで、これのためにポインタ置き場を借りに作るだけか
  • コンパイラのための型
  • 可変ではなくそれらを参照するポインタを置く型か

より多くのボックスのユースケースは第17章でもお見かけするでしょう

  • はい、とっとと次

Derefトレイトでスマートポインタを普通の参照のように扱う

#
  • Boxは型だったからtrait版と予想
  • 構成的には最初Boxの説明してこっちに入れ替えるように書くらしい
fn main() {
    let x = 5;
    let y = &x;

    assert_eq!(5, x);
    assert_eq!(5, *y);
}
  • これ*yを外したらなんで動かないかわからん

まとめ

#
  • Boxの概要を理解できた
    • おそらくスマートポインタはコンパイラのためのサイズ計算が無限ループしてしまうのを防ぐための参照
    • ここの無限ループがなんで起きるまではわからん
  • 軽く調べたら同じ型の中に同じ型入れるだけだった
    • 最初からそう書け!!!!

次ここ
NO IMAGEDerefトレイトでスマートポインタを普通の参照のように扱う - The Rust Programming Language 日本語版