当前位置:网站首页>每日一R「03」Borrow 语义与引用
每日一R「03」Borrow 语义与引用
2022-08-10 19:08:00 【InfoQ】
01-只读借用/引用
&x
*yfn 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);
}
边栏推荐
- cordova 安装错误 Command failed: powershell 解决方法
- “2022零信任神兽方阵”启动调研,欢迎各单位填报信息
- 转铁蛋白修饰长春新碱-粉防己碱脂质体|转铁蛋白修饰共载紫杉醇和金雀异黄素脂质体(试剂)
- 转铁蛋白Tf功能化β-榄香烯-雷公藤红素/紫杉醇PLGA纳米粒/雷公藤甲素脂质体(化学试剂)
- Transferrin-modified osthole long-circulating liposomes/PEG-PLGA nanoparticles loaded with notoginsenoside R1 ([email prot
- QoS服务质量八拥塞避免
- mysql踩坑----case when then用法
- 从 GAN 到 WGAN
- The Biotin-PEG3-Br/acid/NHS ester/alcohol/amine collection that everyone wants to share
- TDD、FDD是什么意思?
猜你喜欢

QoS服务质量七交换机拥塞管理

echart 特例-多分组X轴

@Autowired annotation --required a single bean, but 2 were found causes and solutions

从 GAN 到 WGAN

3D Game Modeling Learning Route

【毕业设计】基于STM32的天气预报盒子 - 嵌入式 单片机 物联网

leetcode 84.柱状图中最大的矩形 单调栈应用

网站架构探测&chrome插件用于信息收集

【自然语言处理】【向量表示】PairSupCon:用于句子表示的成对监督对比学习

mysql----group by、where以及聚合函数需要注意事项
随机推荐
机器学习|模型评估——AUC
(十)图像数据的序列与反序列化
QoS Quality of Service Six Router Congestion Management
flask装饰器版登录、session
哈工大软件构造Lab3(2022)
【luogu CF1534F2】Falling Sand (Hard Version)(性质)(dfs)(线段树 / 单调队列 / 贪心)
常见端口及服务
argparse——命令行参数解析
flask的配置文件
怎么完全卸载赛门铁克_Symantec卸载方法,赛门铁克卸载「建议收藏」
洛谷 P1629 邮递员送信 (三种最短路)
(十二) findContours函数的hierarchy详解
力扣150-逆波兰表达式求值——栈实现
The Biotin-PEG3-Br/acid/NHS ester/alcohol/amine collection that everyone wants to share
我们用48h,合作创造了一款Web游戏:Dice Crush,参加国际赛事
你不知道的浏览器页面渲染机制
[SemiDrive source code analysis] [MailBox inter-core communication] 52 - DCF Notify implementation principle analysis and code combat
铁蛋白-AHLL纳米颗粒|人表皮生长因子-铁蛋白重链亚基纳米粒子(EGF-5Cys-FTH1)|铁蛋白颗粒包载氯霉素Chloramphenicol-Ferritin
史上最全GIS相关软件(CAD、FME、Arcgis、ArcgisPro)
线性结构----链表