メソッドを呼ばせてもらえないから関数呼ぶのよくわからない
https://doc.rust-jp.rs/book-ja/ch15-03-drop.html#stdmemdropで早期に値をドロップする
Conversation
Notices
-
Embed this notice
zunda (zundan@mastodon.zunda.ninja)'s status on Sunday, 19-May-2024 10:37:55 JST zunda -
Embed this notice
Masaki Hara (qnighy@qnmd.info)'s status on Sunday, 19-May-2024 11:56:16 JST Masaki Hara @zundan この場合単にDrop::dropのかわりにdropを呼ぶのではなく、もう少し複雑なことが起きています。
たとえば、 let x = (vec![1, 2, 3], 4); drop(x) というコードを考えます。ここでxはタプル型ですが、タプル型はDropを実装していません。ではxをdropしてと何も起きないかというとそんなことはなく、 x.0 の Drop::drop を呼ぶ処理が走ることになります。
このように、dropは単にDrop::dropを呼ぶのではなく、Drop::dropを再帰的に呼ぶ責務を担っています。In conversation permalink -
Embed this notice
zunda (zundan@mastodon.zunda.ninja)'s status on Sunday, 19-May-2024 11:56:16 JST zunda @qnighy ありがとうございます!なるほど、スコープを抜ける時にコンパイラが暗に呼ぶのはdrop(x)なのだろうと思うと納得できました。drop(x)はコードに書いて明に呼ぶこともできて、どちらの場合でもxをdropしていく過程でDrop::dropが呼ばれる感じなのですねー
In conversation permalink
-
Embed this notice