当前位置:网站首页>每日一R「03」Borrow 语义与引用
每日一R「03」Borrow 语义与引用
2022-08-10 19:08:00 【InfoQ】
01-只读借用/引用
&x

*y
fn main() {
let data = vec![1, 2, 3, 4];
let data1 = data; // data 的所有权转移给了 data1,后续不能再使用 data
println!("sum of data1: {}", sum(data1)); // data1 的所有权转移到了函数 sum 中,后续不能再使用 data1
println!("data1: {:?}", data1); // error1
println!("sum of data: {}", sum(data)); // error2
}
fn sum(data: Vec<u32>) -> u32 {
data.iter().fold(0, |acc, x| acc + x)
}
fn main() {
let data = vec![1, 2, 3, 4];
let data1 = &data; // data1 为 data 的只读引用
println!("sum of data1: {}", sum(data1)); // 只读引用实现了 Copy trait
println!("data1: {:?}", data1); // 不会出错
println!("sum of data: {}", sum(&data));
}
fn sum(data: &Vec<u32>) -> u32 {
// 值的地址会改变么?引用的地址会改变么?
println!("addr of value: {:p}, addr of ref: {:p}", data, &data);
data.iter().fold(0, |acc, x| acc + x)
}

02-可变借用/引用
&mut x
- 在一个作用域内,仅允许一个活跃的可变引用。
- 在一个作用域内,活跃的可变引用(写)和只读引用(读)是互斥的,不能同时存在。
fn main() {
let mut x: u32 = 10;
let y = &mut x;
println!("{}", *y); // 1
let z = &mut x; // 2
*z = 30;
println!("{}", x);
}
边栏推荐
- Transferrin-modified vincristine-tetrandrine liposomes | transferrin-modified co-loaded paclitaxel and genistein liposomes (reagents)
- 力扣150-逆波兰表达式求值——栈实现
- 「POJ 3666」Making the Grade 题解(两种做法)
- 铁蛋白颗粒负载雷替曲塞/培美曲塞/磺胺地索辛/金刚烷(科研试剂)
- QoS服务质量六路由器拥塞管理
- 测试/开发程序员值这么多钱么?“我“不会愿赌服输......
- Modern Privacy-Preserving Record Linkage Techniques: An Overview论文总结
- 【CNN】刷SOTA的trick
- 烟雾、空气质量、温湿度…自己徒手做个环境检测设备
- TDD、FDD是什么意思?
猜你喜欢
[email protected])纳米酶"/>
血红素-金纳米颗粒(Heme-AuNP)复合纳米酶|金纳米颗粒核多孔空心碳纳米球壳([email protected])纳米酶
3D Game Modeling Learning Route
spark学习笔记(九)——sparkSQL核心编程-DataFrame/DataSet/DF、DS、RDD三者之间的转换关系
[email protected]纳米模拟酶|PtCo合金纳米粒子"/>
水溶性合金量子点纳米酶|CuMoS纳米酶|多孔硅基Pt(Au)纳米酶|[email protected]纳米模拟酶|PtCo合金纳米粒子
铁蛋白颗粒负载雷替曲塞/培美曲塞/磺胺地索辛/金刚烷(科研试剂)
“2022零信任神兽方阵”启动调研,欢迎各单位填报信息
FEMRL: A Framework for Large-Scale Privacy-Preserving Linkage of Patients’ Electronic Health Rec Paper Summary
30分钟使用百度EasyDL实现健康码/行程码智能识别
端口探测详解
转铁蛋白Tf功能化β-榄香烯-雷公藤红素/紫杉醇PLGA纳米粒/雷公藤甲素脂质体(化学试剂)
随机推荐
Modern Privacy-Preserving Record Linkage Techniques: An Overview论文总结
端口探测详解
Rider调试ASP.NET Core时报thread not gc-safe的解决方法
servlet映射路径匹配解析
一维数组动态和问题答记
(十)图像数据的序列与反序列化
2022杭电多校七 Black Magic (签到)
cordova 安装错误 Command failed: powershell 解决方法
QoS Quality of Service Eight Congestion Avoidance
几行深度学习代码设计包含功能位点的候选免疫原、酶活性位点、蛋白结合蛋白、金属配位蛋白
Leetcode 200.岛屿数量 BFS
leetcode 547.省份数量 并查集
运维面试题(每日一题)
flask生成路由的2种方式和反向生成url
你不知道的浏览器页面渲染机制
Optimizing Bloom Filter: Challenges, Solutions, and Comparisons论文总结
从 GAN 到 WGAN
优雅退出在Golang中的实现
皮质-皮质网络的多尺度交流
[教你做小游戏] 只用几行原生JS,写一个函数,播放音效、播放BGM、切换BGM