我正在阅读 Rust 指南的 返回指针部分。以下是其中的示例代码:
以下解释中的强调部分让我感到困惑:
“这段代码中没有复制。main函数为`box`分配了足够的空间,将指向该内存的指针作为x传递给foo函数,然后foo函数直接将值写入该指针。这样可以直接将返回值写入已分配的box中。”
阅读了一个相关问题,我仍然不明白“无复制”这一点。
函数foo是否会返回`*x`的副本? 如果是,如何理解上述解释? 如果不是,这与所有权和借用有关吗?
我理解所有权和借用的概念,只是不知道它们发生的时间。
struct BigStruct {
one: int,
two: int,
// etc
one_hundred: int,
}
fn foo(x: Box<BigStruct>) -> BigStruct {
return *x;
}
fn main() {
let x = box BigStruct {
one: 1,
two: 2,
one_hundred: 100,
};
let y = box foo(x);
}
以下解释中的强调部分让我感到困惑:
“这段代码中没有复制。main函数为`box`分配了足够的空间,将指向该内存的指针作为x传递给foo函数,然后foo函数直接将值写入该指针。这样可以直接将返回值写入已分配的box中。”
阅读了一个相关问题,我仍然不明白“无复制”这一点。
函数foo是否会返回`*x`的副本? 如果是,如何理解上述解释? 如果不是,这与所有权和借用有关吗?
我理解所有权和借用的概念,只是不知道它们发生的时间。