可变引用(&mut T)
- 有可变权,move自被引用者,当可变引用生命期停止,可变权主动了债。
- 可变权的泉源应当来自所有者,不然意义不大年夜。
参考
- Rust 情况设备事项一览
- 官方文档:Rust 法度榜样设计说话(第二版)
- Rust教程11之所有权
- 你在开辟过程中都碰到过 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"); // 缺点!总结:
【编辑推荐】
- 深度进修主动编码器还能用于数据生成?这篇文┞仿告诉你谜底
- 卷积神经收集不克不及处理“图”构造数据?这篇文┞仿告诉你谜底
- 数据可视化的7个好处
- 聊聊数据发掘比赛中的套路与深度进修的局限
- 若何快速周全建立本身的大年夜数据常识体系?
推荐阅读
对大年夜多半大年夜事机械进修工作的仁攀来说,设计一个神经收集无异于制造一项艺术作品。神经收集平日始于一个常见的架构,然后我们须要对参数赓续地进行调剂和优化,直到找到一个好的组>>>详细阅读
本文标题:初识Rust语言的所有权概念
地址:http://www.17bianji.com/lsqh/36436.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示