ループ内で変更可能なボローを取得しようとしていますが、動作させることができません。私はすべての可能なガード、生のポインタ、すべてを試しました。ループ内で変更することができます
struct Test<'a> {
a: &'a str,
}
impl<'a> Test<'a> {
pub fn new() -> Self {
Test { a: &mut "test" }
}
pub fn dostuff(&'a mut self) {
self.a = "test";
}
pub fn fixme(&'a mut self) {
let mut i = 0;
while i < 10 {
self.dostuff();
i += 1;
}
}
}
fn main() {
let mut test = Test::new();
test.fixme();
}
error[E0499]: cannot borrow `*self` as mutable more than once at a time
--> src/main.rs:19:13
|
19 | self.dostuff();
| ^^^^ mutable borrow starts here in previous iteration of loop
...
22 | }
| - mutable borrow ends here
私はこの問題を解決する方法を理解するために管理することはできません。私はまだ機能の署名を同じに保つために修正が必要です。私のコードははるかに複雑ですが、このスニペットは最小限に抑えています。
ここはthe complete code of what I'm trying to solveです。
*機能を同じに保つために修正が必要です* - 何も変更できない場合、何も修正できません。 – Shepmaster
'String'の代わりに'&str'を使用するのは正当な理由がありますか? 'Test'が文字列を所有している場合は、所有している型を使用します。 – Boiethios
問題が発生している実際のコードを追加しました。それをgit repoにプッシュしました。遊び場要点は単なるエラーそのものの一例でした。 – Chronium