第九章:静流境 · 生命周期与智能灵枢之术
"灵不可散无归,术不可失其主。唯知存亡之律,方可掌控万象之根。"
顾行云开始接触复杂灵术:多个术式调用、灵力相互交织,导致引用失效、灵气悬空。他一度陷入混乱之境,直到他被指引进入"静流殿",参悟三大神术:
-
生命周期标印
-
智能灵枢(智能指针)
-
解引用灵转(Deref)
一、生命周期标印(Lifetimes):灵气存在的界限
顾行云终于体会到:引用虽灵动,但若生命周期不定,灵气失控即生混乱!
基本术式:
rust
fn longest<'a>(s1: &'a str, s2: &'a str) -> &'a str {
if s1.len() > s2.len() { s1 } else { s2 }
}
这里
'a
是灵气存在周期的"印记",标注 s1、s2 与返回值皆归同一生命周期。
他领悟:"生命周期并不生成灵气,它只是确定其'存与亡'之界。"
二、智能灵枢(Smart Pointer):Box / Rc / RefCell
在术式持久化中,顾行云需对灵体赋予"智能容器"------既控制释放,又能灵活共享:
灵枢类型 | 功效 | 使用场景 |
---|---|---|
Box<T> |
堆分配、唯一所有权 | 递归结构、占用较大灵力之术体 |
Rc<T> |
多灵共持,无变更 | 多者共享灵符,不可篡改 |
RefCell<T> |
运行时借用检查,允许修改 | 灵术内部变更但语法上不想变 mut |
示例:多灵共持
rust
use std::rc::Rc;
let scroll = Rc::new(String::from("魂符·影分身"));
let apprentice1 = Rc::clone(&scroll);
let apprentice2 = Rc::clone(&scroll);
他使用"共享术契"维系多名术士共同引用同一卷轴。
三、解引用灵转(Deref Coercion)
顾行云修炼 Box<T>
时,惊讶地发现:
rust
let s = Box::new(String::from("雷隐诀"));
println!("{}", s); // 自动转换!为何可直接打印?
原来这是 Rust 的灵术兼容机制:
-
若类型实现了
Deref
trait; -
使用时自动向内转换为引用形式。
他自己演练:
rust
use std::ops::Deref;
struct SpellScroll(String);
impl Deref for SpellScroll {
type Target = String;
fn deref(&self) -> &Self::Target {
&self.0
}
}
现在,他可将 SpellScroll
如同 String
使用,灵能无碍!
术式诀 · 静流之道
借而知归,枢而统灵;流转有界,灵不悬空;天下术士,皆当明此三律。
⬅️ 上一章 [下一章 待续➡️]