Я пытаюсь изучить все тонкости памяти в 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();
}
Будет ли поведение возврата здесь также одинаковым длявсе другие не примитивные типы данных?
В отличие от Есть ли способ вернуть ссылку на переменную, созданную в функции? , я хотел бы узнать немного больше о том, что происходитпод капотом.Ответы на этот вопрос не дают ясности относительно того, создается ли вектор и затем копируется в новое местоположение, или возвращается владение указателем. Я понимаю, что векторы создаются в куче, поэтому я предполагаю, что указатель задействован.