第七章:契约境 · Trait 与多灵共鸣之道
"灵形虽异,道心可同。若得共鸣,万象皆可一术施行。"
顾行云修习至此,灵体愈发多样。有灵兽、有术阵、有祭器,每者行为不同。但他突然思考:为何每次施术都需写不同函数?是否可定一'共通心法',使灵体契约同源之技?
正此时,《Rust之书》卷轴打开------"Trait 术 · 灵能契约篇"映入眼帘。
一、定义契约 · Trait之印
他首先刻下一个灵体契约 Castable
,意指"可施术者":
rust
trait Castable {
fn cast(&self);
}
此为灵族协约之印,任何类型一旦签署(实现)此印,便可召唤统一之术。
二、为灵族签约 · Impl 绑定
他为不同灵族签下契约:
rust
struct FireBeast;
struct IceRune;
impl Castable for FireBeast {
fn cast(&self) {
println!("🔥 火兽燃魂一击!");
}
}
impl Castable for IceRune {
fn cast(&self) {
println!("❄️ 冰符凝霜结界!");
}
}
三、统一施术 · 多灵共鸣召唤
此后,无论是火兽还是冰符,只需一句:
rust
fn activate<T: Castable>(item: T) {
item.cast();
}
T: Castable
即为约定"此灵体签订了 Castable 术契"。
或使用动态引用召唤灵体:
rust
fn trigger(item: &dyn Castable) {
item.cast();
}
四、拓展接口 · 默认契约之术
他还为契约写下默认施术方法:
rust
trait Castable {
fn cast(&self) {
println!("✨ 灵术默认释放------无个性输出");
}
}
若某灵体未定专属方法,也能借用默认施法------"通用灵纹"。
五、Trait vs OOP:不一样的共鸣方式
顾行云也曾修习世俗 OOP 编程之术,今观 Trait,顿悟:
比较维度 | OOP 接口 | Rust Trait(契约术) |
---|---|---|
继承结构 | 类层级(Inheritance) | 扁平解耦(实现者自选) |
动态多态 | 虚函数 + vtable | dyn Trait + 安全抽象 |
静态优化 | 难以内联优化 | 零成本抽象(泛型实现) |
默认方法支持 | ✅ 支持 | ✅ 同样支持 |
顾行云欣然书写:
"Trait 非唯契约之术,实乃多灵合道之规。"
术式口诀 · 契约之理
异象可通心,一术可众形;明契共鸣路,法不必千名。