저는 녹의 차용 문제에 직면하고 있습니다. 해결할 생각이 있습니다. 그러나 나는 내가 찾은 길은 좋은 대답이 아니라고 생각한다. 그래서 그것을 해결할 다른 방법이 있는지 궁금합니다. 뭔가를 추가로 인수 input
을 취하는 방법, f2
을 가지고 S
구조체의 멤버를 Rust에서 같은 구조체의 메서드에 전달
struct S {
val: u8
}
impl S {
pub fn f1(&mut self) {
println!("F1");
self.f2(self.val);
}
pub fn f2(&mut self, input: u8) {
println!("F2");
// Do something with input
}
}
fn main() {
let mut s = S {
val: 0
};
s.f1();
}
구조 :
나는 내 상황을 설명하기 위해 다음 예제 코드를 사용합니다. 또 다른 방법은 f1
이며 f2
은 val
이고 구조는 S
입니다. 외부인은 사용 사례에 따라 f1
또는 f2
중 하나를 호출 할 수 있습니다.
src\main.rs:9:17: 9:25 error: cannot use `self.val` because it was mutably borrowed [E0503]
src\main.rs:9 self.f2(self.val);
^~~~~~~~
src\main.rs:9:9: 9:13 note: borrow of `*self` occurs here
src\main.rs:9 self.f2(self.val);
^~~~
나는 대략 이해하는 방법을 녹에서 차입이 작품 : 나는 위의 코드를 컴파일
, 나는 다음과 같은 오류 메시지를 받았습니다. 그래서 나는f1
의 구현을 변경하여 문제를 해결할 수 있다는 사실을 알고 :
pub fn f1(&mut self) {
let v = self.val;
println!("F1");
self.f2(v);
}
는 그러나, 나는 약간의 중복이 솔루션을 느낍니다. 추가 변수 바인딩을 사용하지 않고 이 문제를 해결할 수있는 방법이 있는지 궁금합니다.
답장을 보내 주셔서 감사합니다. 나는'f2'에 전달하기 전에'self.val'을 더 잘 복사한다고 생각합니다. –