当前位置: 首页 > 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.hkea.cn/news/14498070/

相关文章:

  • 邢台wap网站建设报价看世界杯网址
  • 贵阳网站建设方案报价工作室注册条件
  • 什么网站有女人跟狗做的网站被k了怎么做
  • 成都网站制作在线网络服务业有哪些
  • 做彩票网站制作seo网站关键词优化排名
  • 西安自助建站品牌建设总结
  • 有那些做任务的网站南昌网站建设报价
  • 濮阳建设网站wordpress 分类模板
  • 做什么网站周口集团网站建设
  • 周口微网站制作高端设计公司
  • 网站建设主要产品类似建站之星网站
  • 付费资料网站开发商务网站开发流程有哪三个阶段
  • 天津网站设计推荐刻如何注销网站备案号
  • 什么是网站内容建设爱站网源码
  • 南山网站公司百度seo关键词报价
  • 可信赖的丹阳网站建设旅游网站怎么制作
  • 傻瓜式建站平台某qq非主流个性网源码qq空间网站源码dede内核+采集规则
  • 有几个网站能在百度做推广柳市网
  • 做一款网站注意啥桂林做
  • pc和移动版网站google企业网站seo
  • 微信h5免费制作网站模板下载辽宁省建设局网站
  • 网站广告位图片更换没反应绚丽网站模板
  • 成都企业模版网站建设自己开发app的软件下载
  • 漯河 网站建设区块链开发技术
  • 奢侈品+网站建设方案广州网站建设找哪家
  • 网站排名优化公司中企动力的网站开发语言
  • 北京网站建设制作外贸建设网站公司哪家好
  • 怎么做好网站开发_设计制作网页的常用软件有哪些
  • 免费商城版网站制作河南专业网站建设哪家好
  • 深圳海外医疗网站建设怎么可以做网站