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

网站的打开速度福州建网站,做网页

网站的打开速度,福州建网站,做网页,十大免费数据网站,wordpress固定连接只能访问首页喜欢的话别忘了点赞、收藏加关注哦#xff0c;对接下来的教程有兴趣的可以关注专栏。谢谢喵#xff01;(#xff65;ω#xff65;) 15.3.1. 函数和方法的隐式解引用转化(Deref Coercion) 隐式解引用转化(Deref Coercion)是为函数和方法提供的一种便捷特性。 它的原理是…喜欢的话别忘了点赞、收藏加关注哦对接下来的教程有兴趣的可以关注专栏。谢谢喵(ω) 15.3.1. 函数和方法的隐式解引用转化(Deref Coercion) 隐式解引用转化(Deref Coercion)是为函数和方法提供的一种便捷特性。 它的原理是*假如类型T实现了Deref trait那么Deref Coercion可以把T的引用转化为T经过Deref操作后生成的引用。 当某类型的引用传递给函数或者是方法时但它的类型与定义的参数类型不匹配Deref Coercion就会自动发生。编译器会对deref进行一系列的调用来把它转换为所需的参数类型。这个操作在编译时完成没有额外的性能开销。 这句话比较绕看个例子就明白了。我们接着上篇文章的代码来写 use std::ops::Deref; struct MyBoxT(T); implT MyBoxT { fn new(x: T) - MyBoxT { MyBox(x) } } implT Deref for MyBoxT { type Target T; fn deref(self) - T { self.0 } }这是上篇文章的代码定义了MyBox元组结构体元组结构体的介绍详见 5.1. 定义并实例化struct创建了new函数并为其实现了Deref trait所以就可以使用一般的解引用操作来处理MyBox。 以下是增添的部分: fn hello(name: str) { println!(Hello, {}, name); }hello这个函数接收str也就是字符串切片类型然后打印出来。 写主函数看看实际使用 fn main(){ let m MyBox::new(String::from(Rust)); hello(m); }m是MyBoxString类型m就是MyBoxString而hello函数接收的是str但这么写并不会报错这是为什么呢 首先MyBox已经实现了Deref trait所以Rust可以调用deref方法来把MyBoxString转化为String这就是刚才讲的那个比较绕的规则。 到这一步还没完String类型与str类型不同又是怎么转换的呢因为String类型也实现了Deref trait而且它的deref实现是返回一个字符串切片str类型所以Rust会在String上使用deref把String转化为str。最终这个类型就匹配了。 而如果Rust没有Deref Coercion那么写法会是 hello((*m)[..]);先使用解引用符号*把m从MyBoxString转化为String加上引用符号把m从String转化为String通过切片操作 [..]可以获得 String 中的完整内容的引用并且把其值从String转化为str 15.3.2. 解引用于可变性 可以使用DerefMut trait重载可变引用的*运算符。DerefMut相比Deref多了Mut这是指DerefMut返回的是可变引用mut T而Deref返回的是不可变引用T。 在类型和trait满足下列三种情况时Rust会执行Deref Coercion 当T:DerefTargetU允许T转换为U T实现了Deref trait而Deref trait下的deref方法的返回类型是U,那么T就可以被转化为U。 举个例子上文代码例的MyBox类型就实现了Deref trait其deref方法的返回值是泛型参数T所以MyBox就可以转换为T。 当T:DerefMutTargetU允许mut T转换为mut U。 T实现了DerefMut trait(DerefMut返回的是可变引用mut T)而DerefMut trait下的deref方法的返回类型是mut U,那么mut T就可以被转化为mut U。 当T:DerefTargetU,允许mut T转化为U。 Rust可以自动地把一个可变引用转化为不可变引用但是反过来绝对不行。因为将不可变的引用转化为可变的引用要求引用是唯一的借用规则中有讲详见 4.4. 引用与借用。
http://www.sczhlp.com/news/166797/

相关文章:

  • 2025桩基检测机构最新企业咨询服务推荐排行榜,海上桩基检测,水上桩基检测服务推荐这十家公司!
  • 算法坑点
  • 个人网站怎么注册上海企业网站备案
  • 万网网站建设方法广告投放报价
  • description 网站描述个人备案网站可以做新闻站吗
  • 做最好的网站wordpress 插件和工具栏
  • 江门免费网站建站模板青岛网站建设搭建
  • 网站商城建设多少钱网站开发保存学习进度的方案
  • 网站开发常用的技术网站怎么做备案
  • 在线网站建设哪家便宜小程序游戏开发平台
  • 站长之家seo综合怎么免费建个人网站
  • 企梦云网站建设长沙最坑装修公司
  • 网站域名分类电商网站备案
  • 网站建设 推广什么意思中小企业网站规划方案
  • 做网站到底能不能赚钱淘宝如何开个人店铺
  • 网站建设 浏览器兼容深圳营销推广公司
  • 网站建设师百度百科中山手机网站建设电话
  • 众筹网站怎么做推广万维网站续费多少一年
  • 网站建设时间规划表wordpress 搜索关键词
  • 网站建设课程大纲阿里巴巴网站域名建设
  • 网站开发工具简述17货源网一件代发
  • 建设网店网站推荐定制型网站建设
  • 帝国cms灵动标签做网站地图建设部高级职称查询官方网站
  • 包装袋设计网站推荐东莞建设工程检测中心网站
  • 网站备案行业网站建设 科目
  • 上海网站搭建公司哪家好网站后台怎么修改文字
  • 为什么要做一个营销型网站泰兴市城乡住房建设局网站
  • python可以做app开发吗前端seo优化
  • B3869 [GESP202309 四级] 进制转换-题解
  • 物理