루프 내에서 변경 가능한 빌림을 얻으려고합니다. 작동시키지 못합니다. 가능한 모든 경비원, 생생한 포인터, 모든 것을 시도했습니다. 루프에서 빌릴 수 있습니다.
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