Menu
CoddyTech

루프 내 Borrow

Coddy Rust 여정의 기초 섹션에 포함된 레슨. 75개 중 67번째.

Rust에서는 모든 값에 소유자가 있으며, 반복문에서 값을 사용할 때 Rust는 그 값을 빌리려는 것(일시적으로 살펴보기만 하는 것)인지, 아니면 그 값의 소유권을 가져가려는 것(소비하는 것)인지 알아야 합니다.

루프가 데이터의 소유권을 가져가면 루프가 끝난 후에는 더 이상 그 데이터를 사용할 수 없으므로 이 점이 중요합니다. 이 차이를 이해하는 것이 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);
// 이렇게 하면 오류가 발생합니다

이렇게 생각해 보세요:

  1. &를 사용하는 것은 사진 앨범을 보는 것과 같습니다. 모든 사진을 볼 수 있지만 앨범은 그대로 유지됩니다.
  2. &를 사용하지 않는 것은 사진을 꺼내는 것과 같습니다. 사진을 사용할 수 있지만 나중에는 앨범이 비어 있게 됩니다.

이제 이 스타일을 살펴봅시다:

for num in numbers.iter() {}

다음과 비슷합니다:

for num in &numbers {}

그리고 벡터를 mut로 선언해야 하는 변경 루프입니다:

let mut numbers = vec![1, 2, 3, 4, 5];
for num in numbers.iter_mut() { 
    *num *= 2;
}

다음과 같이 쓸 수도 있습니다:

for num in &mut numbers { 
    *num *= 2;
}

직접 해보기

이 레슨에는 코드 챌린지가 없습니다.

quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

기초의 모든 레슨

직접 연습해 보세요: 온라인 Rust 컴파일러