2014-12-27 10 views
-1

변수가 호출자에게 반환 될 때 변수가 참조하는 데이터는 어떻게됩니까? 데이터가 파괴되어 Drop 특성이 실행될 가능성이 있습니까?Rust에서 반환되는 값의 범위는 무엇입니까?

+0

시도한 코드를 게시하십시오. 작동하지 않습니다. 어떤 코드도 시도하지 않았다면 왜 가능하지 않을 수도 있다고 생각합니까? – Shepmaster

+0

내 원래의 설명은 문제를 설명하는 것이 좋지 않았습니다. 이것은 실제로 어떤 코드 예제도 필요하지 않아야하며 합리적인 질문이라고 생각합니다 (업데이트 이후). – jarkko

+0

"범위"가 의미하는 바를 자세히 설명 할 수 있습니까? 나는 아직도 몇몇 코드 예제 (심지어 의사 코드)가 우리가 당신이 알고 싶은 것을 이해하는 데 도움이 될 것이라고 믿는다. 내가 말할 수있는 한, 당신의 질문에 대한 대답은 "호출 한 것에 달려있다"이다. (함수의 반환 값 *을 가정 할 때). – Shepmaster

답변

2

는 (왜?) 당신이 할 수있는 것 같다 :이 질문을 쓸 때 나는 녹에있는 데이터의 수명주기를 이해하지 못했다

use std::io::File; 

fn open_file(path: &Path) -> File { 
    let file = File::open(path).unwrap() ; 
    file 
} 


fn main() { 
    let path = Path::new("hello.txt"); 
    let mut file = open_file(&path); 

    let str = file.read_to_string().unwrap(); 
    println!("Contents of {}:\n{}\n", path.display(), str); 
} 
0

. 값을 반환하면 데이터 소유권이 호출자가 할당 한 변수로 이동합니다. 사소한 질문이지만 질문을 할 때 방금 언어 실험을 시작했습니다 :)