为什么我总是看到函数返回基本类型u64, u32, u8,而不是像引用那样频繁?例如fn foo() -> &u32不使用引用/可变引用而移动这些较小的类型是否更便宜?
u64, u32, u8
fn foo() -> &u32
n3schb8v1#
问题不是 * 为什么 * 函数返回值而不是引用,而是 * 它们返回什么 *?更具体地说,谁是它们返回的 * 所有者 *。如果某个函数创建了一个值并想给予你这个值,那么它在语义上给你一个所有权。如果这个值已经存在于其他地方并且有一个所有者函数,那么它可以返回一个对它的引用,这样你就可以借用请注意,给定&i32与给定i32相比没有太多好处,因为此类型是Copy。你可以在Tho Book的this章节中阅读更多关于所有权的内容。
&i32
i32
Copy
1条答案
按热度按时间n3schb8v1#
问题不是 * 为什么 * 函数返回值而不是引用,而是 * 它们返回什么 *?更具体地说,谁是它们返回的 * 所有者 *。如果某个函数创建了一个值并想给予你这个值,那么它在语义上给你一个所有权。如果这个值已经存在于其他地方并且有一个所有者函数,那么它可以返回一个对它的引用,这样你就可以借用请注意,给定
&i32
与给定i32
相比没有太多好处,因为此类型是Copy
。你可以在Tho Book的this章节中阅读更多关于所有权的内容。