はじめに
#NO IMAGEThe Rust Programming Language 日本語版 - The Rust Programming Language 日本語版
を読んでいる
お勉強
#NO IMAGEDerefトレイトでスマートポインタを普通の参照のように扱う - The Rust Programming Language 日本語版
をやる
- さすがに眠いが明日休みなのでありがたい
- 今思ったけども自前実装の節は割とあるな
- traitのおかげ
メモ
#数値と数値への参照の比較は許されていません
- 今見直したけどこれもあるのか
*yを使用して参照が指している値まで追いかけなければなりません(そのため参照外しです)
- ここがどうしてもわからんな
- あー
*が参照外しなんだ- この記述やっていない気もするぞ
- ムカつくねー
- とりあえずつけると型によって
moveかcopyされるらしい - あー惑わされていた
- 参照外しをしたときはエラーが起きずに
yと比較したときにエラーが起きると記載されていた- 分かりづらすぎてムカつくな
fn main() {
let x = 5;
let y = Box::new(x);
assert_eq!(5, x);
assert_eq!(5, *y);
}
- そうするとここで
Boxいれる意味は?- 参照外しすればいいじゃん
- そういうことでもないらしい
- でも
Boxでやりたいことって借用と一緒じゃないの?- 大枠の役割は似ているけど細かい部分が違うらしい
- ちょっと抜かそう
- あ、でも借用だとできない比較は
*でできるのね
Derefトレイトがないと、コンパイラは&参照しか参照外しできません。
- 参照も参照外しできたのか
- まぁ参照だしそうか
Derefトレイトの話をしていて、実装すると*で一度だけ参照を外せるらしい- はずしたらなかの型がでてくる
まとめ
#- 大枠でやりたいことは借用と似ている
- ヒープへ置くために入れることができる
Derefトレイトを実装すると参照外しできるようになる- それっぽく書いたけどわかんねー!
- スマートポインタむず
次ここ
NO IMAGEDerefトレイトでスマートポインタを普通の参照のように扱う - The Rust Programming Language 日本語版