第四章:灵型化形 · 掌控结构、枚举与命运之路
顾行云在断念之山闭关七日,终于踏入形态构筑之境。他眼前浮现残破法阵碎片,每一道灵纹代表一种数据聚合方式------此境,正是自定义类型之道:
-
结构(Struct):定义术式之形;
-
枚举(Enum):分化万象、择其一形;
-
Option/Result:应对不确定命运与失败轮回。
一、构筑灵躯 · struct
术
在创造灵兽系统时,他需要封装每只灵兽的属性:
rust
struct SpiritBeast {
name: String,
power: u32,
nature: Element,
}
他继续定义元素属性(通过枚举)如下:
result
enum Element {
Fire,
Water,
Earth,
Wind,
Unknown,
}
初始化灵兽:
rust
let mut beast = SpiritBeast {
name: String::from("炎狮"),
power: 88,
nature: Element::Fire,
};
顾行云发现,每个结构体如同灵族之形,可封装状态、嵌套属性、构建千灵百态的体系。
二、命运分流 · 枚举术与 match
合流
在战斗系统中,敌人与友军具备不同行为,他用 enum
建立类型分流:
rust
enum Role {
Warrior(String), //战士
Healer(String), //治疗师
Rogue(String), //野兽
}
判断方法:
rust
fn identify(role: Role) {
match role {
Role::Warrior(name) => println!("{}为战士,适合正面刚", name), Role::Healer(name) => println!("{}为治疗者,负责支援", name), Role::Rogue(name) => println!("{}为潜行者,适合奇袭", name), }
}
他明悟:"枚举乃命路分支, match
则为命运之占卜。"
三、应对未知 · Option<T>
与 Result<T, E>
在灵阵运行中,偶有咒语失败、符文丢失,顾行云不能再盲目取用变量,于是学会了安全判断之术:
Option<T>
:灵息可能存在,也可能未显
rust
fn find_essence(idx: usize) -> Option<String> {
let essences = vec!["炽焰", "霜晶", "雷牙"];
essences.get(idx).cloned()
}
match find_essence(1) {
Some(name) => println!("找到灵息:{}", name),
None => println!("灵息未现。"),
}
Result<T, E>
:灵术可能失败,要为异常设防
rust
fn cast_scroll(name: &str) -> Result<(), String> {
if name == "禁术·天坠" {
Err(String::from("灵压过强,卷轴破裂!"))
} else {
Ok(())
}
}
顾行云学会了以 ?
运符,简化灵术传导路径:
rust
rust
fn execute() -> Result<(), String> {
cast_scroll("凤炎")?;
cast_scroll("禁术·天坠")?; // 若失败,自动返回
Ok(())
}
心法口诀 · 化形之道
结构定形,枚举定途;结果不定,心不可浮;能正视失败,方可步步升阶。