当前位置: 首页 > news >正文

Rust-是否使用Rc<T>

Rust的所有权机制,数据允许通过借用的方式,在函数的上下文中传递数据。如果离开数据作用的有效范围,这个借用就会失效,编译就会报错。这也是我们不会将借用(引用)作为函数的返回值的原因。下面的代码编译失败。

fn create_note() -> &Note {...
}

要将借用的数据传递出其有效范围,要么实现Copy trait,要么实现Clone trait。
这个时候,如果我们要传递的结构体比较大,那么这里的内存复制成本就会随之升高,性能就会有所损耗。

要解决这个问题,可以使用std::rc::Rc。Rc是Reference Counted的缩写,它在堆上创建数据,其目标是实现数据安全共享。因为Rc的内存是动态在堆上分配的,因此这里也会有一些开销。

这里就回到了主题,是否使用Rc<T>。如果我们使用所有权借用的机制来传递数据,且不会发生数据拷贝,那么建议不使用Rc<T>。如果我们的数据会在不同的上下文中频繁传递,例如,闭包,那么建议使用Rc<T>

http://www.lryc.cn/news/195010.html

相关文章:

  • 论文解析——一种面向Chiplet互连的高效传输协议设计与实现
  • svo2.0 svo pro 编译运行
  • 微信小程序前端生成动态海报图
  • SQL如何导入数据以及第一次上机作业
  • 数据结构-----红黑树简介
  • 哈佛教授因果推断力作:《Causal Inference: What If 》pdf下载
  • Drecom 的《Eternal Crypt - Wizardry BC -》加入 The Sandbox 啦!
  • 外贸网站流量下降可能是这五点原因造成的
  • 交通部 EDI是什么?如何处理?
  • 【Redis】Java Spring操作redis
  • 如何养好一个微信新号?
  • flutter问题汇总
  • 2.1 初探大数据
  • 论自动化测试中的xpath | 多语言测试最新案例
  • CSS基础详细解析(附带综合小练习)
  • react中ant.design框架配置动态路由
  • Linux运行环境搭建系列-Openresty安装
  • React TreeSelect设置默认展开项的方法
  • Golang基础学习笔记
  • ES _bulk 批量操作用法
  • LCR 176.判断是否为平衡二叉树
  • 跨境商城源码有哪些独特的功能和优势
  • latex如何对.pdf格式的图片实现裁剪
  • windows10下 iperf3测试带宽
  • Stratasys F170 3D打印教程
  • 以太坊 CALL 数据解析【ETH】
  • Xilinx IP 10G Ethernet PCS/PMA IP Core
  • 软件设计师_面向对象_学习笔记
  • 行业追踪,2023-10-16
  • ubuntu深度学习配置