コンテンツへスキップ
Rustコンパイラエラーエラー
E0502

E0502 — 不変借用中のため可変借用不可

不変借用がまだ有効な間は、値を可変借用できません。

rustcargo

このエラーの原因

Rustでは、同一データに対して可変参照と不変参照を同時に保持することができません。可変借用を取得しようとした時点で、不変借用がまだ有効です。

修正方法

不変借用が終了してから可変借用が開始されるようコードを再構成してください。独立したコピーが必要な場合はデータをcloneしてください。ブロックを使って不変借用のスコープを制限してください。

例

let mut v = vec![1, 2];
let r = &v[0];
v.push(3);
println!("{}", r);
公式ドキュメント

関連するエラーコード