루프 내 Borrow
Coddy Rust 여정의 기초 섹션에 포함된 레슨. 75개 중 67번째.
Rust에서는 모든 값에 소유자가 있으며, 루프에서 값을 사용할 때 Rust는 해당 값을 차용하려는 것인지(일시적으로 살펴보기만 하는 것인지), 아니면 해당 값의 ownership을 가져가려는 것인지(소비하는 것인지) 알아야 합니다.
이는 loop가 사용자의 data에 대한 ownership을 가져가면, loop가 끝난 after에는 더 이상 해당 data를 사용할 수 없기 때문입니다. 이 차이를 이해하는 것이 Rust에서 loop를 올바르게 작성하는 핵심입니다.
예를 들어, 다음 데이터를 살펴보세요:
let numbers = vec![1, 2, 3, 4, 5];
let mut sum = 0;방법 1: 데이터 살펴보기(& 사용):
for number in &numbers {
sum += number;
}
println!("I can use it here: {:?}", numbers);방법 2: Taking data(& 없이):
for number in numbers {
sum += number;
}
// println!("Can't use {:?} anymore!", numbers);
// 이것은 오류를 발생시킬 것입니다다음과 같이 생각해 보세요:
&를 사용하는 것은 사진 앨범을 보는 것과 같습니다. 모든 사진을 볼 수 있지만, 앨범은 그대로 유지됩니다.&를 사용하지 않는 것은 사진을 꺼내는 것과 같습니다. 사진을 사용할 수 있지만, 그 후 앨범은 비어 있게 됩니다.
이제 이 스타일입니다:
for num in numbers.iter() {}다음과 유사합니다:
for num in &numbers {}그리고 변형 loop:
for num in numbers.iter_mut() {
*num *= 2;
}Can 또한 다음과 같이 작성할 수 있습니다:
for num in &mut numbers {
*num *= 2;
}직접 해보기
이 레슨에는 코드 챌린지가 없습니다.
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
기초의 모든 레슨
직접 연습해 보세요: 온라인 Rust 컴파일러