为什么在rust中原始类型不作为引用返回?

nhaq1z21  于 2022-11-12  发布在  其他
关注(0)|答案(1)|浏览(114)

为什么我总是看到函数返回基本类型u64, u32, u8,而不是像引用那样频繁?
例如fn foo() -> &u32
不使用引用/可变引用而移动这些较小的类型是否更便宜?

n3schb8v

n3schb8v1#

问题不是 * 为什么 * 函数返回值而不是引用,而是 * 它们返回什么 *?更具体地说,谁是它们返回的 * 所有者 *。如果某个函数创建了一个值并想给予你这个值,那么它在语义上给你一个所有权。如果这个值已经存在于其他地方并且有一个所有者函数,那么它可以返回一个对它的引用,这样你就可以借用请注意,给定&i32与给定i32相比没有太多好处,因为此类型是Copy
你可以在Tho Book的this章节中阅读更多关于所有权的内容。

相关问题