Rust中返回值的范围是什么?

时间:2014-12-27 14:41:03

标签: rust ownership-semantics memory-safety

当变量返回给调用者时,变量引用的数据会发生什么变化?当数据被销毁并且Drop trait可能被执行时?

2 个答案:

答案 0 :(得分:1)

似乎你可以(为什么不呢?):

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);
}

答案 1 :(得分:0)

当我写这个问题时,我不明白Rust中数据的生命周期。返回值会导致数据的所有权移动到调用者指定的变量。琐碎,但我刚刚开始尝试使用该语言时写下问题:)