Open3

Rust へーって思ったこと

ひげひげ

Trait の coherenceとorphan rule がわからない

トレイトと構造体が定義されている場所によって挙動が変わる。
この問題は PartialEqu32が外部クレートだったのでそのままだとダメだった。次の問題にも書かれてるようにラッパーを作らないとダメ
https://rust-exercises.com/04_traits/02_orphan_rule
サイト
https://qnighy.hatenablog.com/entry/2017/07/20/220000
https://github.com/Ixrec/rust-orphan-rules?tab=readme-ov-file

ひげひげ

引数の受け取り方まとめ

可変参照

  • 渡された値を関数の中で書き換えるとき
  • 他の関数に可変参照を渡す必要があるとき

  • 関数の中で値の所有権が必要なとき
  • コピーセマンティクスの値を受け取るとき

不変参照

  • 上記にあてはまらないとき

基本的に不変参照と考えておけばつまづかなくて済む。初めの方は所有権が仮引数に移動されるからわざわざ&をつけると考えていたが、初めから&がデフォルトと考えるのもアリ