범위
범위는 프로그램 내에서 변수가 유효한 영역을 정의합니다.
fn main() {
let x = 10;
{
let y = 20;
println!("Inside the inner scope, x: {}, y: {}", x, y);
}
println!("Outside the inner scope, x: {}", x);
// println!("Outside the inner scope, y: {}", y); // This will cause a compile error
}
우측 예제에서는 r1, r2, r3라는 세 개의 참조가 선언되어 있으며, 각각 두 개의 다른 범위에서 초기화됩니다.
첫 번째 범위에서 r1과 r2는 s에 대한 불변 참조로 초기화됩니다.
이 범위가 종료되면, r1과 r2에 대한 참조는 더 이상 유효하지 않습니다.
두 번째 범위에서는 r3가 s에 대한 변경 가능한 참조로 초기화됩니다.
이렇게 하면 첫 번째 범위에서의 불변 참조와 겹치지 않으므로 빌림 규칙에 위배되지 않습니다.
마지막으로 모든 범위가 종료된 후에는 각 참조가 각각 다른 범위에서 초기화되었기 때문에 r1, r2, r3를 함께 출력할 수 있습니다.