美文网首页
[Rust]指针

[Rust]指针

作者: Tsun424 | 来源:发表于2020-01-28 18:02 被阅读0次

Box<T>

与我们通常熟知的指针概念相同,是指向堆中数据的指针。Box<T>沿袭了Rust所有权机制:共享不可变,可变不同享,即, 同时只能存在一个可变引用或者多个不可变引用。

Rc<T>

Rc<T> 主要用于同一堆上所分配的数据区域需要有多个只读访问的情况,多个访问都对数据具有所有权

  • Rc包裹的T是不可变的,即不能修改T
  • Rc只能用于单线程
  • 由于要维护引用计数,存在运行时消耗

Cell<T>

也是指向堆中数据的指针,但与Box<T>不同,Cell<T>允许修改T,同时,Cell<T>支持多个借用修改T。

  • 有一个限制条件是T必须是实现了Copy trait的类型
  • Cell<T>只能用在单线程

RefCell<T>

RefCell<T>去掉了T必须实现Copy trait的限制,不会在编译器检查,但运行时依然要保证同时只能有一个可变借用,否则线程崩溃。同时可以有多个不可变借用。

组合使用

Rc<T>和RefCell<T>可以组合使用,场景:同时存在多个不同所有者,每个所有者又可以随时修改其内容。

相关文章

  • Rust for cpp devs - 智能指针

    与 cpp 类似,Rust 也有智能指针。Rust 中的智能指针与引用最大的不同是,智能指针 own 内存,而引用...

  • [Rust]指针

    Box 与我们通常熟知的指针概念相同,是指向堆中数据的指针。Box沿袭了Rust所有权机制:共享不可变...

  • C/C++转Rust的项目实践总结 1-5

    目录: 导入外部符号 C++与Rust数据类型对应关系 使用slice直接读写指针内容写指针读指针 判断指针是否为...

  • Rust语言编程实例100题-066

    Rust语言编程实例100题-066 题目:Rust指针练习。先来理解下引用和借用的概念。引用是作为参数传递给函数...

  • Rust Option 模式匹配简介

    Option Option是rust非常好用的数据结构,用来解决 Null 空指针问题,是rust安全基石重要一环...

  • rust中的智能指针Box

    rust中的指针大致可以分成三种:引用、裸指针和智能指针。 智能指针实际上是一种结构体,只不过它的行为类似指针。智...

  • Rust Deref与自动解引用

    Deref和DerefMut都是Rust中的trait,用来对指针类型进行转化,得到指针所指向的内容。比如从Box...

  • Rust智能指针

    智能指针 在C/C++中,堆内存的申请和释放都由程序员自己管理,自C++11起,引入了智能指针来协助管理内存。对于...

  • Rust标准库

    [TOC] Rust标准库 Rust中的智能指针Box Box 允许将一个值放在堆上而不是栈上,留在栈上的则是指向...

  • 【RUST_BASIC】Rust 智能指针

    1 Box 最简单直接的智能指针是 box,其类型是 Box,其允许将一个值放在堆上,留在栈上的则是指...

网友评论

      本文标题:[Rust]指针

      本文链接:https://www.haomeiwen.com/subject/pykmthtx.html