我正在尝试学习Rust中内存的细节。当在函数内创建一个向量然后返回时,返回的是一个引用还是整个向量被复制了?
例如:
use std::io;
fn line_to_ints() -> Vec<u32> {
let mut line = String::new();
io::stdin()
.read_line(&mut line)
.expect("Failed to read line");
return line
.split(" ")
.map(|x| x.parse().expect("Not an integer!"))
.collect();
}
这里的返回行为对于所有其他非基本数据类型也是相同的吗?
与有没有办法返回在函数中创建的变量的引用?不同,我想更多地了解底层发生了什么。那个问题的答案并没有清楚地说明向量是否被创建然后复制到新位置,或者指针的所有权是否被返回。我知道向量是在堆上创建的,所以我想象一个指针是涉及其中的。
return
关键字。相反,您可以省略return
和分号。 - Shepmaster