rust - Rust 中的 Rc::clone(&rc) 和 rc.clone() 之间有什么区别吗?是否有基于此的编译优化?

标签 rust

我注意到 rust 书推荐使用 Rc::clone(&rc)rc.clone()如下:

use std::rc::Rc;

let five = Rc::new(5);

// recommended
let _ = Rc::clone(&five);

// not recommended
let _ = five.clone();


为什么?

最佳答案

函数语法( Rc::clone(&rc) )清楚地表明您只是在创建一个新的共享引用(便宜),而不是克隆被引用的底层对象(可能很昂贵)。对于任意引用计数类型,可能不清楚发生的是浅拷贝还是深拷贝。

这个可读性/清晰度问题导致 proposals for a separate interface for cloning reference counted pointer types , 与 linters now warning when a reference counted type is cloned via a method .

关于rust - Rust 中的 Rc::clone(&rc) 和 rc.clone() 之间有什么区别吗?是否有基于此的编译优化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61949769/

相关文章:

rust - 在 `PhantomData`的实现中 `Vec`到底在做什么?

postgresql - 与 postgres crate 的查询函数一起使用时,ilike 表达式中的 "$1"参数是否需要转义?

rust - 有没有办法在 actix-web 中拆分服务器路由声明?

parsing - 在 proc 宏派生上将属性转换为标识符

enums - 有没有办法在 Rust 中使用 "flatten"枚举进行(反)序列化?

rust - Rust 中的 unwrap 是什么,它的用途是什么?

string - 为什么从标准输入读取用户输入时我的字符串不匹配?

rust - 已编译的 Rust 可执行文件是否从依赖项中排除未使用的代码?

rust - 如何从 stdin 读取具有最大输入长度的行?

rust - 对于数字类型的 "fuzzy compare",我可以使用什么特征?