Rust的所有权、借用、可变引用 -- 学习随笔
Rust所有权规则:
1. Rust中每一个变量都是自己值的所有者;
2. 每一个值在任一时刻只有一个所有者;
3. 所有者(变量)离开所属作用域后,这个值被丢弃;
fn main() { let s1 = String::from("Hello!"); let s2 = s1; println!("s2 passed: {}", s2); println!("s1 failed: {}", s1); // value borrowed here after move }
Rust中的借用(不让所有权发生转移 "&")
fn echo(s: &String) { println!("echo: {}", s); } fn main() { let s = String::from("A"); echo(&s); // 可以正常输出 println!("main output: {}", s); }
Rust中的可变引用
fn change(s: &mut String) { s.push_str(" changed!"); } fn main() { let mut s = String::from("variable-s"); change(&mut s); println!("after change: {}", s); }
同一时刻至多只能有一个可变引用
fn main() { let mut s = String::from("var s"); let s_ref1 = &mut s; let s_ref2 = &mut s; println!("{}", s_ref1); println!("{}", s_ref2); // error: second mutable borrow occurs here }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
2018-12-28 express-http-proxy 的基础使用
2018-12-28 redux中createStore方法的默认参数