Rust: cannot borrow as mutable because it is also borrowed as immutable
Rustの借用チェッカーエラーの解決方法
概要
Rustの借用チェッカーが、同じデータに対する可変参照と不変参照の同時存在を検出した際に発生するエラーです。
エラーメッセージ
error[E0502]: cannot borrow `x` as mutable because it is also borrowed as immutable
原因
- 同時借用: 不変参照が有効な間に可変参照を取得しようとした
- スコープの重複: 借用のスコープが重なっている
- ループ内の借用: イテレーション中にコレクションを変更しようとした
解決策
1. スコープを分離する
| |
2. cloneを使用する
| |
3. RefCellで内部可変性を使用
| |
よくある間違い
- ループ内でコレクションを変更しようとする
- 関数引数で可変参照と不変参照を同時に渡す
Rust の他のエラー
この記事は役に立ちましたか?