目次

Rustの勉強[Rc<T> その1]

(更新: )ぎじゅつ

はじめに

#

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

お勉強

#

NO IMAGERc<T>は、参照カウント方式のスマートポインタ - The Rust Programming Language 日本語版

  • ここやる
    • 不評だったらしい
  • 光らせるをmemeにしていたが慣れてきた
    • もうちょっといい感じにしたい

メモ

#
  • 感想をかいていく
    • rc〈T〉だからジェネリクスの何か
    • 思ったより短い
    • 所有権を複数持てそうな雰囲気
    • 真意はまったくわからん

単独の値が複数の所有者を持つ可能性のある場合もあります。

  • ここ光ってそうだな

Rc<T>は、参照カウント方式のスマートポインタ

  • そもそもタイトルが光っているか?

Rc<T>を家族部屋のテレビと想像してください。
1人がテレビを見に部屋に入ったら、テレビをつけます。 他の人も部屋に入ってテレビを観ることができます。
最後の人が部屋を離れる時、 もう使用されていないので、テレビを消します。
他の人がまだ観ているのに誰かがテレビを消したら、 残りのテレビ視聴者が騒ぐでしょう!

  • これね、多分不評だった場所

  • うーん、憶測だけども全部使い終わったら一気にdropできるようなものなのかな

Rc<T>は、シングルスレッドの筋書きで使用するためだけのものであることに注意してください。 第16章で並行性について議論する時に、マルチスレッドプログラムで参照カウントをする方法を講義します。

  • シングルスレッドだけらしい
  • 使うか…?

![[Pasted image 20260213104746.jpg]]

  • これがわかりやすかった

  • いったんふわっとしていても進める

enum List {
    Cons(i32, Box<List>),
    Nil,
}

use List::{Cons, Nil};

fn main() {
    let a = Cons(5, Box::new(Cons(10, Box::new(Nil))));
    let b = Cons(3, Box::new(a));
    let c = Cons(4, Box::new(a));
}
  • ここなんでmoveしているかわからんな
  • そもそも長い式は関係なくてBoxを代入するとmoveするんだった

まとめ

#
  • 思ったより全然進まなかったな
  • 今の理解だとまとめられることがあんまりない
  • Boxで作成してエラーが起きるところをRcで肩代わりできそうだった

次回は同じ場所
NO IMAGERc<T>は、参照カウント方式のスマートポインタ - The Rust Programming Language 日本語版