← Rust コース
48. move クロージャ — スレッドに所有権を渡す
スレッドのクロージャで外の変数を使うときは、クロージャの前に move を付けて所有権ごとスレッドに渡します。スレッドが元の変数より長く生きる可能性があるため、借用のままではコンパイラが安全を保証できず、move なしではコンパイルエラーになります。
「メインで用意したデータをスレッドに丸ごと預けて処理させる」のが並行処理の基本パターンです。所有権が移るので、渡したあとに元のスレッドからその変数は使えません。結果が必要なら join の返り値で受け取ります。
「渡したあとも使いたいのに」とエラーに悩んだら、渡す前に clone して複製を渡すのが最初の解決策です(複数スレッドで本当に共有したい場合の道具は後のレッスンで学びます)。
▶ サンプルコードを実行してみよう(自由に書き換えてOK)
Rust
サンプルコードで身につける(5本) →
学んだ概念を、素朴な例から実務寄りの例まで5つの具体例で確認します。
公式ドキュメントで詳しく ↗