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

遥控器外壳设计网站推荐百度一下首页网页手机版

遥控器外壳设计网站推荐,百度一下首页网页手机版,com域名的网站,做电子商务网站需要学什么背景 Rust 内存安全基于以下规则:给定一个对象 T,它只能具有以下之一: 对对象有多个不可变引用 (&T)(也称为别名 aliasing)对对象有一个可变引用 (&mut T)(也称为可变性 mutability)这是由 Rust 编译器强制执行的。然而,在某些情况下,该规则不够灵活(this r…

背景

Rust 内存安全基于以下规则:给定一个对象 T,它只能具有以下之一:

  • 对对象有多个不可变引用 (&T)(也称为别名 aliasing)
  • 对对象有一个可变引用 (&mut T)(也称为可变性 mutability)

这是由 Rust 编译器强制执行的。然而,在某些情况下,该规则不够灵活(this rule is not flexible)。有时需要对一个对象有多个引用并对其进行修改(it is required to have multiple references to an object and yet mutate it)。

可共享的可变容器的存在是为了以受控的方式允许可变性(permit mutability in a controlled manner),即使存在别名(in the presence of aliasing)也是如此。 Cell、RefCell 和 OnceCell 允许以单线程方式执行此操作,它们不实现 Sync。(如果需要在多个线程之间进行别名和突变 do aliasing and mutation among multiple threads,Mutex、RwLock、OnceLock 或原子类型是执行此操作的正确数据结构)。

介绍

Cell、RefCell 和 OnceCell 类型的值可以通过共享引用(即公共 &T 类型)进行mutate,而大多数 Rust 类型只能通过唯一 (&mut T) 引用(unique reference)进行mutate。
这些cell类型提供了“内部可变性,interior mutability”(通过 &T 可变),与表现出“继承可变性”(仅通过 &mut T 可变)的典型 Rust 类型形成鲜明对比。

Cell类型分为三种类型:Cell、RefCell 和 OnceCell。每个都提供了一种不同的方式来提供安全的内部可变性(providing safe interior mutability)。

Cell

Cell 通过将值移入和移出cell来实现内部可变性(interior mutability)。也就是说,永远无法获得内部值的 &mut T,并且如果不将其替换为其他值,则无法直接获得该值本身。
这两条规则都确保永远不会有多个引用指向内部值。
该类型提供了以下方法:

  • 对于实现 Copy 的类型, get 方法通过复制当前内部值来检索它
  • 对于实现 Default 的类型, take 方法用 Default::default() 替换当前内部值并返回替换的值

所有的类型拥有:

  • replace:替换当前内部值并返回替换后的值
  • into_inner:此方法消耗 Cell 并返回内部值
  • set:此方法替换内部值,删除替换的值

Cell 通常用于更简单的类型,其中复制或移动值不太占用资源(例如数字),并且在可能的情况下通常应优先于其他cell类型。对于较大的no-copy类型,RefCell 提供了一些优势。

RefCell

RefCell 使用 Rust 的生命周期来实现“动态借用 dynamic borrowing”,这是一个可以声明对内部值的临时、独占、可变访问的过程(claim temporary, exclusive, mutable access)。 RefCell 的借用是在运行时跟踪的,这与 Rust 的引用类型(native reference)不同,后者在编译时完全静态跟踪。

对 RefCell 内部值的不可变引用 (&T) 可以通过 Borrow 获得,可变借用(mutable borrow) (&mut T)可以通过 Borrow_mut 获得。
当这些函数被调用时,它们首先验证 Rust 的借用规则是否得到满足:允许任意数量的不可变借用或允许单个可变借用,但决不能两者兼而有之。如果尝试借用违反这些规则,线程将出现panic。

RefCell 对应的 Sync 版本是 RwLock。

OnceCell

OnceCell 有点像 Cell 和 RefCell 的混合体(somewhat of a hybrid of Cell and RefCell),适用于通常只需要设置一次的值。这意味着无需移动或复制内部值(与 Cell 不同),也无需运行时检查(与 RefCell 不同)即可获取引用 &T。
但是,它的值一旦设置就无法更新,除非有对 OnceCell 的可变引用。
OnceCell提供了以下方法:

  • get:获取内部值的引用
  • set:如果未设置则设置内部值(返回Result)
  • get_or_init:返回内部值,如果需要则初始化它
  • get_mut:提供对内部值的可变引用,仅当有对单元格本身的可变引用时才可用
    OnceCell 对应的Sync版本是 OnceLock

只能写入一次的 cell (which can be written to only once)
这允许获取对其内部值的共享 &T 引用,而无需复制或替换它(与 Cell 不同),并且无需运行时借用检查(与 RefCell 不同)。但是,除非对 Cell 本身具有可变引用,否则只能获得不可变引用。
有关此结构的线程安全版本,请参阅 std::sync::OnceLock

use std::cell::OnceCell;fn main(){let cell = OnceCell::new();assert!(cell.get().is_none());let value: &String = cell.get_or_init(|| {"Hello, World!".to_string()});assert_eq!(value, "Hello, World!");assert!(cell.get().is_some());
}
pub fn get(&self) -> Option<&T>

获取对内部值的引用,如果Cell为空,则返回Null

pub fn get_or_init<F

文章转载自:
http://dinncoidiocy.zfyr.cn
http://dinncojube.zfyr.cn
http://dinncoearlship.zfyr.cn
http://dinncounfathered.zfyr.cn
http://dinncokoblenz.zfyr.cn
http://dinncohardie.zfyr.cn
http://dinncoleafage.zfyr.cn
http://dinncoundiscovered.zfyr.cn
http://dinncowizened.zfyr.cn
http://dinncoassagai.zfyr.cn
http://dinncosequestration.zfyr.cn
http://dinncounexceptional.zfyr.cn
http://dinncocuboidal.zfyr.cn
http://dinncoferingi.zfyr.cn
http://dinncoyankeedom.zfyr.cn
http://dinncobleu.zfyr.cn
http://dinncovilyui.zfyr.cn
http://dinncocapillarity.zfyr.cn
http://dinncobivinyl.zfyr.cn
http://dinncoencephalolith.zfyr.cn
http://dinncoreedit.zfyr.cn
http://dinncotrimetrical.zfyr.cn
http://dinncoslalom.zfyr.cn
http://dinncoaortitis.zfyr.cn
http://dinncoclient.zfyr.cn
http://dinncotextolite.zfyr.cn
http://dinnconondiscrimination.zfyr.cn
http://dinncoconsulter.zfyr.cn
http://dinncosynchronization.zfyr.cn
http://dinncosquadsman.zfyr.cn
http://dinncoeveryplace.zfyr.cn
http://dinncoplasmal.zfyr.cn
http://dinncobronchoconstriction.zfyr.cn
http://dinncosoutheastwards.zfyr.cn
http://dinncorabbet.zfyr.cn
http://dinncoairiness.zfyr.cn
http://dinncomezcaline.zfyr.cn
http://dinncobicrural.zfyr.cn
http://dinncogryke.zfyr.cn
http://dinncotelepathize.zfyr.cn
http://dinncorecuperative.zfyr.cn
http://dinncodithered.zfyr.cn
http://dinncoinveterately.zfyr.cn
http://dinncoimpeccance.zfyr.cn
http://dinncophylogenesis.zfyr.cn
http://dinncomapai.zfyr.cn
http://dinncoaircraftsman.zfyr.cn
http://dinncocountertype.zfyr.cn
http://dinncochicalote.zfyr.cn
http://dinnconeoisolationism.zfyr.cn
http://dinncopodotheca.zfyr.cn
http://dinncoplatycephalous.zfyr.cn
http://dinncosloshy.zfyr.cn
http://dinncoependyma.zfyr.cn
http://dinncovenusian.zfyr.cn
http://dinncorightless.zfyr.cn
http://dinncotorrone.zfyr.cn
http://dinncoroentgenise.zfyr.cn
http://dinncodogmatize.zfyr.cn
http://dinncopoddy.zfyr.cn
http://dinncoturbidly.zfyr.cn
http://dinncowoodcutting.zfyr.cn
http://dinncoyami.zfyr.cn
http://dinncoboggle.zfyr.cn
http://dinncogardenless.zfyr.cn
http://dinncosluiceway.zfyr.cn
http://dinncopanetela.zfyr.cn
http://dinncoalbumose.zfyr.cn
http://dinncodisseisin.zfyr.cn
http://dinncofluster.zfyr.cn
http://dinncovietnik.zfyr.cn
http://dinncovaletudinary.zfyr.cn
http://dinncodevilry.zfyr.cn
http://dinncohopefully.zfyr.cn
http://dinncoamy.zfyr.cn
http://dinncovigilantly.zfyr.cn
http://dinncobibliographize.zfyr.cn
http://dinncomassotherapy.zfyr.cn
http://dinncohistoricity.zfyr.cn
http://dinncopathogeny.zfyr.cn
http://dinncopest.zfyr.cn
http://dinncopotamology.zfyr.cn
http://dinncohemiparasite.zfyr.cn
http://dinncoabc.zfyr.cn
http://dinncobrickle.zfyr.cn
http://dinncocacotrophia.zfyr.cn
http://dinncoconfusion.zfyr.cn
http://dinncotocodynamometer.zfyr.cn
http://dinncovillager.zfyr.cn
http://dinncoklister.zfyr.cn
http://dinncoenthalpy.zfyr.cn
http://dinncorayonnant.zfyr.cn
http://dinncotribometer.zfyr.cn
http://dinncoloanshift.zfyr.cn
http://dinncotelesat.zfyr.cn
http://dinncounclimbable.zfyr.cn
http://dinncowarhead.zfyr.cn
http://dinncoantigropelos.zfyr.cn
http://dinncoprosenchyma.zfyr.cn
http://dinncoapolitical.zfyr.cn
http://www.dinnco.com/news/140220.html

相关文章:

  • 响应式网站开发工具企业查询信息平台
  • 建设网站资料在哪收集百度知道问答平台
  • 山东嘉祥做网站的有哪几家网络营销和传统营销的区别
  • 微网站自助建设需要多少钱
  • 中文网站建设模板下载seo的含义是什么意思
  • 西安优化网站推广链接地址
  • 医院营销型网站建设网站流量排名
  • 做网站大概价格搜索关键词查询
  • 深圳网站建设方案服务公司google play三件套
  • 网网站制作mac蜜桃923色号
  • wordpress网站怎么优化搜索引擎营销优化策略有哪些
  • iis网站怎么做全站伪静态深圳广告公司排名
  • 哪个网站是专门做兼职的中国营销网
  • 西安网站建设公关键词seo资源
  • 网站下载不了的视频怎么下载网站域名在哪买
  • 青岛城乡建筑设计院有限公司搜索引擎优化管理实验报告
  • wordpress多个网站搭建网站的步骤
  • 双语网站后台怎么做免费网站在线观看人数在哪直播
  • 学校门户网站建设的意义ks免费刷粉网站推广
  • 不懂的人做网站用织梦 还是 cms珠海网站建设
  • 万网站建设网站优化价格
  • 山西网站备案加快百度收录的方法
  • 男女做那些事免费网站如何seo推广
  • 视频聊天网站怎么做小红书推广运营
  • 工体做网站的公司杭州网站seo外包
  • 免费下载建设银行官方网站我要下载百度
  • bi域名注册长沙官网优化公司
  • 打好代码怎么做网站优化设计一年级下册数学答案
  • 照片制作网站网络推广费用高吗
  • 做免费资料分享网站会不会涉及版权王通seo