迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 >

Rust 中 Rc::clone(&rc) 和 rc.clone() 的区别

作者:迹忆客 最近更新:2024/02/05 浏览次数:

在本文中,我们将讨论 Rust 中的 Rc::clone(&rc)rc.clone() 之间的区别。这两个特征都用于克隆或复制对象。


在 Rust 中使用 Rc::clone(&rc) 进行克隆

Rc::clone(&rc) 用于创建一个新的共享引用,而不是克隆引用的底层对象。Rc 代表 Reference Counted,类型 T 值的共享所有权由类型 Rc<T> 提供,在堆中分配。

use std::fmt;
use std::rc::Rc;

fn print_it<T: fmt::Display>(val: T) {
    println!("{}", val);
}

fn main(){
    let greet = Rc::new("Hello, world".to_string());
    let borrowed = Rc::clone(&greet);
    print_it(greet);
    print_it(borrowed);
}

输出:

Hello, world
Hello, world

我们已经通过使用 use 语句在上面编写的代码中显示了 Rc 的范围。然后,使用原始字符串创建与函数相关的 Rc 类型::new()

稍后使用另一个相对函数创建引用::clone() 用于原始 greet:RC(这与初始引用不同,即&greet)。我们尝试使用此代码的函数 print_it 打印引用变量和原始变量。

Rc::clone 的执行不会像大多数类型的克隆执行那样对数据进行深层复制。数据的深拷贝可能需要大量时间。

通过将 Rc::clone 用于引用计数,我们可以识别克隆的深拷贝类型以及增加引用计数的类型。在搜索代码中的执行问题时,我们需要考虑深拷贝克隆并忽略对 Rc::clone 的调用。


Rust 中的 rc.clone()

clone() 函数创建一个新的拥有的句柄,它可以移动到一个新线程。根据 Rust 的标准库,这个函数往往会使常见的代码模式容易被误解。

问题在于,可以从详细命名法中受益的更具体的过程和类型只能通过高级或抽象术语访问。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

用 Rust 读写文件

发布时间:2023/03/21 浏览次数:203 分类:编程语言

本教程演示了在不同版本的 Rust 中读取和写入文件的方式。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便