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

网站分析的优劣势天津建设工程信息平台

网站分析的优劣势,天津建设工程信息平台,西安百度推广排名,中企动力邮箱登录入口官网喜欢的话别忘了点赞、收藏加关注哦#xff08;加关注即可阅读全文#xff09;#xff0c;对接下来的教程有兴趣的可以关注专栏。谢谢喵#xff01;(#xff65;ω#xff65;) 15.4.1. Drop trait的意义 类型如果实现了Drop trait#xff0c;就可以让程序员自定义当值…喜欢的话别忘了点赞、收藏加关注哦加关注即可阅读全文对接下来的教程有兴趣的可以关注专栏。谢谢喵(ω) 15.4.1. Drop trait的意义 类型如果实现了Drop trait就可以让程序员自定义当值离开作用域时发生的操作。例如文件、网络资源的释放等。 在某些语言中比如C/C对于某些类型程序员每次使用完这些类型的实例时都必须写代码来释放内存或资源。如果忘记了系统可能会过载并崩溃。在Rust中程序员可以指定每当值超出范围时运行特定的代码编译器将自动插入此代码。 任何类型都可以实现Drop trait而Drop trait只要求实现drop方法其参数是对self的可变引用。Drop trait在预导入模块(prelude)所以说使用它时不需要手动地引入。看个例子 struct CustomSmartPointer {data: String, }impl Drop for CustomSmartPointer {fn drop(mut self) {println!(Dropping CustomSmartPointer with data {}!, self.data);} }fn main() {let c CustomSmartPointer {data: String::from(my stuff),};let d CustomSmartPointer {data: String::from(other stuff),};println!(CustomSmartPointers created.); }结构体CustomSmartPointer下有data字段为String类型。通过impl Drop for CustomSmartPointer为CustomSmartPointer实现了Drop trait。在其里面实现drop方法参数是mut self。这个方法通常是用于释放资源的但出于演示的目的这个方法里就只打印了一句话把self里的data字段的数据打印出来。在main函数里创建了两个CustomSmartPointer的实例c存的是my stuffd存的是other stuff。最后打印CustomSmartPointers created.。 输出: CustomSmartPointers created. Dropping CustomSmartPointer with data other stuff! Dropping CustomSmartPointer with data my stuff!程序会先打印main函数的println!的内容也就是CustomSmartPointers created.。由于c和d走出作用域都在第19行花括号后所以程序接着会分别对c和d调用drop函数。在实现Drop trait时定义的drop函数是打印一句话所以这里c和d就会分别打印一句话。 15.4.2. 使用std::mem::drop来提前drop值 比较遗憾的是我们很难直接禁用自动的drop功能也没必要。因为Drop trait的目的就是进行自动的释放处理逻辑。 此外Rust不允许手动调用Drop trait的drop方法。但是可以调用标准库的std::mem::drop函数来提前drop值相当于提前调用了Drop trait的drop方法它的参数是要丢弃的值。看个例子 struct CustomSmartPointer {data: String, }impl Drop for CustomSmartPointer {fn drop(mut self) {println!(Dropping CustomSmartPointer with data {}!, self.data);} }fn main() {let c CustomSmartPointer {data: String::from(my stuff),};let d CustomSmartPointer {data: String::from(other stuff),};drop(c);println!(CustomSmartPointers created.); }在main函数中手动使用drop函数把c清理掉而d还是自动清理的这个时候的输出顺序应该是c在d前。 输出 Dropping CustomSmartPointer with data my stuff! CustomSmartPointers created. Dropping CustomSmartPointer with data other stuff!这里有些人可能会提出疑问c在走出作用域之前就被释放了那么在走出作用域后编译器会不会再调用一次drop方法导致二次释放(double free)的错误呢答案是不会Rust的设计很安全它的所有权系统会保证引用的有效而drop也只会在确定不再使用这个值时被调用1次。
http://www.lakalapos1.cn/news/25712/

相关文章:

  • 运城网站建设兼职域名申请的步骤包括
  • 网站建设的快乐外贸网络营销如何选取关键词
  • 建设房地产网站自己可以做电子商务网站
  • 邵阳网站优化中和阗盛工程建设有限公司网站
  • 糟糕的网站设计成都装修设计公司排名
  • 制作自己的网站需要什么软件好wordpress子分页
  • 部队内网网站建设方案做网站获流量
  • 有什么网站可以做微信装潢设计师工资一般多少
  • 网站建设和网站设计做框图的网站
  • 做网站最好的软件wordpress指定分类文章列表
  • 网站产品介绍页面的布局方案龙岗seo优化
  • 青岛开办公司要做网站吗wordpress4.4.2下载
  • 怎么备份网站网页制作教程视频下载
  • 网站建设哪家服务好自己可以做公司网站吗
  • 简述网站建设的基本思路手机网站建设讯息
  • 宜春建设局网站河北建设工程信息网一体化平台
  • 一般做网站宽高多少自己怎么设计图片
  • 广州建站模板平台益阳购物网站开发设计
  • 有没有专门做淘宝客的网站网站内容页怎么设计模板
  • 软文广告经典案例南京seo圈子
  • 个人网站做联盟营销郑州免费网站建设哪家好
  • 猪八戒网站找做微信小程序的网页设计理念及设计思路
  • 网站建设措施做个普通的网站多少钱
  • 东营建设局网站大连网页制作
  • 百度电脑版登录网站网站开发 访问速度慢
  • 南宁网站建设 传导c2c平台举例
  • 做游戏交易网站平台排名优化
  • 免费动画制作网站网站前端代码有哪些问题
  • 网络营销导向型企业网站建设特征做网站可以挣钱吗
  • 凡客vancl的网站标题asp网站gzip压缩