Rust修仙之道 第三章:所有权境 · 断念诀
第三章:所有权境 · 断念诀
“天下术士皆惧‘所有权审判’,唯入此境者,能断执念、知归属、通幽微。”
顾行云在“灵气变通殿”闭关九日后,终于触碰到这门 Rust 真义——所有权(Ownership)。据说古籍称此技为“断念诀”,目的就是让修士断其依赖,知其归处,防止灵气流逸于未知空间。
一、所有权三律 · 三断心法
古卷记载所有权定律:
-
每一灵气之值(变量)只属于一名修士(所有者);
-
若所有者转交,他人即得此灵气之主权;
-
若原主不再持有,切不可再执念调用——否则业火 borrow checker 降临!
二、转移与赋予 —— 所有权转移术
顾行云尝试如下术式:
fn main() {
let spell = String::from("风刃术");
cast(spell); // 所有权转移至函数内
println!("{}", spell); // ❌ 编译错误!spell 已无所有权!
}
fn cast(name: String) {
println!("施展:{}", name);
}
原来,一旦将变量传入函数,原主便再无掌控之权。Rust 借此防止悬空灵气影响世界运行稳定性。
三、借用之道 —— 可控共享术
但若只是阅读灵气而不施法,是否能短暂借用?
fn observe(name: &String) {
println!("观察灵术:{}", name);
}
顾行云这才悟出:
-
&T:不可变借用(读者灵视); -
&mut T:可变借用(灵气改写权,单人独享); -
借用期间,所有权仍归本体,不生转移。
他推演术式示例:
let mut spell = String::from("雷击术");
amplify(&mut spell); // 借用并强化
fn amplify(s: &mut String) {
s.push_str("·超强版");
}
四、双重持有之禁 —— 编译器审灵者的怒火
顾行云一时贪功:
let mut qi = String::from("光流");
let r1 = &qi;
let r2 = &mut qi; // ❌ 编译怒吼:同时借用与变更,灵气紊乱!
借阅须诚,变更须独。一念贪心,便惹灵暴。
五、灵气归返术 —— 所有权回赠
如欲在函数中使用灵气,又不希望完全转移,该如何是好?顾行云悟出“归返术”:
fn empower(s: String) -> String {
println!("强化灵术:{}", s);
s
}
let incantation = String::from("火雨");
let incantation = empower(incantation); // 灵气归返
术式口诀 · 所有权之道
授而不归,灵失不现;借而无度,祸发源泉;断其念,得其境,行天下皆不乱。
浙公网安备 33010602011771号