作家
登录

初识Rust语言的所有权概念

作者: 来源: 2017-07-27 16:20:58 阅读 我要评论

可变引用(&mut T)

  1. 有可变权,move自被引用者,当可变引用生命期停止,可变权主动了债。
  2. 可变权的泉源应当来自所有者,不然意义不大年夜。

参考

  1. Rust 情况设备事项一览
  2. 官方文档:Rust 法度榜样设计说话(第二版)
  3. Rust教程11之所有权
  4. 你在开辟过程中都碰到过 Rust 的哪些坑?

注:官方文档琅绫腔有可变权的概念,但小我感到,用这个概念比较好懂得可变引用的应用,也许还有更本质的解释,特此解释。

可变权move的两种方法

let mut x = String::from("hello");  // 所有者x有可变权// 1. 直接转移let y = &mut x;  // 1. y为可变引用,可变权move自xlet z = y;  // 直接转移。z为可变引用y.push_str(" y");  // 缺点!y的可变权已move给zz.push_str(" z");  // 精确// 2. 借居转移let mut y = &mut x;  // 2. y为可变引用,可变权move自xlet w = &mut y;  // 请求y可变。w为可变引用w.push_str(" w");  // 精确// 转移(函数)fn test(i: &mut String) {   i.push_str(" i");   // 精确}let mut x = String::from("hello");  // 所有者x有可变权test(&mut x);x.push_str(" x");  // 精确!可变权已了债

可变引用如有写入操作则请求所有者可变。

let x = String::from("hello");  // x弗成变let mut z = &x;   // z为弗成变引用z.push_str(" z");  // 缺点!let w = &mut z;  // w为可变引用w.push_str(" w");  // 缺点!let mut y = x;  // 所有权转移,y可变let z = &mut y;   // z为可变引用,请求y可变z.push_str(" z");  // 精确!let w = &z;  // w 为弗成变引用w.push_str(" w");  // 缺点!

总结:

【编辑推荐】

  1. 深度进修主动编码器还能用于数据生成?这篇文┞仿告诉你谜底
  2. 卷积神经收集不克不及处理“图”构造数据?这篇文┞仿告诉你谜底
  3. 数据可视化的7个好处
  4. 聊聊数据发掘比赛中的套路与深度进修的局限
  5. 若何快速周全建立本身的大年夜数据常识体系?
【义务编辑:张子龙 TEL:(010)68476606】

  推荐阅读

  如何用自动机器学习实现神经网络进化

对大年夜多半大年夜事机械进修工作的仁攀来说,设计一个神经收集无异于制造一项艺术作品。神经收集平日始于一个常见的架构,然后我们须要对参数赓续地进行调剂和优化,直到找到一个好的组>>>详细阅读


本文标题:初识Rust语言的所有权概念

地址:http://www.17bianji.com/lsqh/36436.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)