루프 내 Borrow
Coddy Rust 여정의 Fundamentals 섹션에 포함된 레슨 — 75개 중 67번째.
Rust에서 루프를 작성할 때, 데이터를 다루는 두 가지 주요 방법이 있습니다. 데이터를 보거나(& 사용) 가져올 수 있습니다. 예를 들어 다음 데이터를 고려해 보세요:
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: 데이터 가져오기 (& 없이):
for number in numbers {
sum += number;
}
// println!("Can't use {:?} anymore!", numbers);
// 이 코드는 오류를 발생시킵니다이렇게 생각해보세요:
&를 사용하는 것은 사진첩을 보는 것과 같습니다. 모든 사진을 볼 수 있지만, 사진첩은 그대로 유지됩니다.
&를 사용하지 않는 것은 사진을 꺼내는 것과 같습니다. 사진을 사용할 수는 있지만, 그 후에는 앨범이 비어 있게 됩니다.
이제 이 스타일입니다:
for num in numbers.iter() {}다음과 유사합니다:
for num in &numbers {}그리고 가변 반복문입니다:
for num in numbers.iter_mut() {
*num *= 2;
}이런 방식으로도 작성할 수 있습니다:
for num in &mut numbers {
*num *= 2;
}치트 시트
Rust 루프에서는 데이터를 살펴보거나(& 사용) 소유권을 가져올 수 있습니다:
데이터 살펴보기 (빌리기):
let numbers = vec![1, 2, 3, 4, 5];
for number in &numbers {
sum += number;
}
// 루프 이후에도 numbers를 계속 사용할 수 있습니다소유권 가져오기:
let numbers = vec![1, 2, 3, 4, 5];
for number in numbers {
sum += number;
}
// 루프 이후에는 numbers를 사용할 수 없습니다반복자(Iterator) 메서드:
// 다음은 동일합니다:
for num in numbers.iter() {}
for num in &numbers {}
// 수정을 위해:
for num in numbers.iter_mut() { *num *= 2; }
for num in &mut numbers { *num *= 2; }직접 해보기
이 레슨에는 코드 챌린지가 없습니다.
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.