找回密码
 立即注册
首页 业界区 业界 Rust修仙之道 第四章:灵型化形 · 掌控结构、枚举 ...

Rust修仙之道 第四章:灵型化形 · 掌控结构、枚举与命运之路

博咱 2025-10-5 14:37:18
第四章:灵型化形 · 掌控结构、枚举与命运之路

顾行云在断念之山闭关七日,终于踏入形态构筑之境。他眼前浮现残破法阵碎片,每一道灵纹代表一种数据聚合方式——此境,正是自定义类型之道:

  • 结构(Struct):定义术式之形;
  • 枚举(Enum):分化万象、择其一形;
  • Option/Result:应对不确定命运与失败轮回。
一、构筑灵躯 · struct 术

在创造灵兽系统时,他需要封装每只灵兽的属性:
  1. struct SpiritBeast {
  2.     name: String,
  3.     power: u32,
  4.     nature: Element,
  5. }
复制代码
他继续定义元素属性(通过枚举)如下:
  1. enum Element {
  2.     Fire,
  3.     Water,
  4.     Earth,
  5.     Wind,
  6.     Unknown,
  7. }
复制代码
初始化灵兽:
  1. let mut beast = SpiritBeast {
  2.     name: String::from("炎狮"),
  3.     power: 88,
  4.     nature: Element::Fire,
  5. };
复制代码
顾行云发现,每个结构体如同灵族之形,可封装状态、嵌套属性、构建千灵百态的体系。
二、命运分流 · 枚举术与 match 合流

在战斗系统中,敌人与友军具备不同行为,他用 enum 建立类型分流:
  1. enum Role {
  2.     Warrior(String), //战士
  3.     Healer(String),  //治疗师
  4.     Rogue(String),   //野兽
  5. }
复制代码
判断方法:
  1. fn identify(role: Role) {
  2.     match role {
  3.         Role::Warrior(name) => println!("{}为战士,适合正面刚", name),        Role::Healer(name) => println!("{}为治疗者,负责支援", name),        Role::Rogue(name) => println!("{}为潜行者,适合奇袭", name),    }
  4. }
复制代码
他明悟:“枚举乃命路分支,match 则为命运之占卜。”
三、应对未知 · Option 与 Result

在灵阵运行中,偶有咒语失败、符文丢失,顾行云不能再盲目取用变量,于是学会了安全判断之术:
Option:灵息可能存在,也可能未显
  1. fn find_essence(idx: usize) -> Option<String> {
  2.     let essences = vec!["炽焰", "霜晶", "雷牙"];
  3.     essences.get(idx).cloned()
  4. }
  5. match find_essence(1) {
  6.     Some(name) => println!("找到灵息:{}", name),
  7.     None => println!("灵息未现。"),
  8. }
复制代码
Result:灵术可能失败,要为异常设防
  1. fn cast_scroll(name: &str) -> Result<(), String> {
  2.     if name == "禁术·天坠" {
  3.         Err(String::from("灵压过强,卷轴破裂!"))
  4.     } else {
  5.         Ok(())
  6.     }
  7. }
复制代码
顾行云学会了以 ? 运符,简化灵术传导路径:
rust
  1. fn execute() -> Result<(), String> {
  2.     cast_scroll("凤炎")?;
  3.     cast_scroll("禁术·天坠")?; // 若失败,自动返回
  4.     Ok(())
  5. }
复制代码
心法口诀 · 化形之道

结构定形,枚举定途;结果不定,心不可浮;能正视失败,方可步步升阶。
⬅️ 上一章            下一章➡️


来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册