2
나는이 두 가지 명백하게 유사한 프로그램의 결과에 놀랐습니다.주소의 범위 : 오래 살지 않습니다
fn main() {
let y: &int = &31i;
println!("My number is {}.",*y)
}
//Output
My number is 31.
그러나이 코드는 오류입니다. y
선언 한 후이 y
에 할당하는 경우
fn main() {
let y: ∫
y = &31i;
println!("My number is {}.",*y)
}
// Output on Rust Playpen
3:12 error: borrowed value does not live long enough
5:2 note: reference must be valid for the block at 1:10...
3:13 note: ...but borrowed value is only valid for the statement at 3:4
분명히, &31i
이 범위를 벗어나. 그러나 동일한 줄에있는 경우 y
이 선언 된 경우 범위에 그대로 있습니다. 나는 이것이 왜 그런지 이유를 알지 못한다.
녹의 디자인으로 인해 이런 식으로 행동하게됩니까? 미리 감사드립니다.
Niko의 블로그에서 임시 직원의 생애가 무엇인지 알아 내려고했던 기사를 읽은 것을 기억합니다. 당신이 차용의 범위를 엄격하게하기를 원하기 때문에, 관대하고 제한적인 상세한 규칙을 생각해내는 것은 꽤 어려웠습니다. –