Rust の match が取る「式」と「ブランチ」の間で、所有権がどう扱われているのか考えたことはあるだろうか? 私はなかった。普段、コンパイルエラーにならないので、なんとなく使っていた、というのが正直なところだ。 でも知らないと困ることもあるだろう。そこで、まずデフォルトが、「借用」と「ムーブ」のどちらになっているのかを確認し、さらに、デフォルトと違う動作をさせるにはどうやるのかを紹介しよう。 なお、この記事を書くにあたり、以下を参考にした。 Stuff the Identity Function Does (in Rust) Rust Users -- Reborrow vs. move また、Rust の所有権システムについて、基本的なことを理解していると想定する。所有権システムについて学ぶには、日本語翻訳版のオフィシャルガイドを読むのがいいだろう。 プログラミング言語Rust -
![Rustでmatch内部の所有権について考える(暗黙の借用 vs. ムーブ) - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/1795521b992067a48dc990deef485033142dd50f/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-412672c5f0600ab9a64263b751f1bc81.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9UnVzdCVFMyU4MSVBN21hdGNoJUU1JTg2JTg1JUU5JTgzJUE4JUUzJTgxJUFFJUU2JTg5JTgwJUU2JTlDJTg5JUU2JUE4JUE5JUUzJTgxJUFCJUUzJTgxJUE0JUUzJTgxJTg0JUUzJTgxJUE2JUU4JTgwJTgzJUUzJTgxJTg4JUUzJTgyJThCJUVGJUJDJTg4JUU2JTlBJTk3JUU5JUJCJTk5JUUzJTgxJUFFJUU1JTgwJTlGJUU3JTk0JUE4JTIwdnMuJTIwJUUzJTgzJUEwJUUzJTgzJUJDJUUzJTgzJTk2JUVGJUJDJTg5JnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9NTYmcz0wYzMzODc5MTBiMDBkMTgzMDUzMTgxOGMyYjExNzI4Zg%26mark-x%3D142%26mark-y%3D57%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9NzcwJnR4dD0lNDB0YXRzdXlhNjUwMiZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTM2JnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9MmE1OTE0ZTE0Nzc2ODRhYzRhODM0ODAxZGFlZTk4NTI%26blend-x%3D142%26blend-y%3D486%26blend-mode%3Dnormal%26s%3D7f38a2f3971f5452919f2447a4a9741e)