Каков объем возвращаемого значения в Rust?
Что происходит с данными, на которые ссылается переменная, когда они возвращаются вызывающей стороне? Когда данные уничтожены и, возможно, выпала черта Drop?
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);
}
Я не понял жизненный цикл данных в Rust, когда писал этот вопрос. Возврат значения приводит к перемещению владельца данных в переменную, назначенную вызывающей стороной. Тривиально, но я только начал экспериментировать с языком, когда писал вопрос:)