跳转到内容

Option 和 Result

OptionResult 是用于预期缺失和可恢复失败的标准 enum 风格值。它们是动态值,不是泛型类型。

数据在正常业务逻辑中可能不存在时,使用 Option::None。操作可能失败且脚本应处理失败原因时,使用 Result::Err。VM error 保留给脚本 bug、契约违反、预算失败或沙箱拒绝。

fn find_reward(rewards, code: String) {
return rewards.get(code)
}
fn parse_amount(text: String) {
return text.parse_i64()
}

标准 helper 包括 is_someis_noneunwrap_orok_orto_optionto_error_option 等谓词和转换。

fn amount_or_zero(text: String) -> i64 {
let parsed = text.parse_i64()
return parsed.unwrap_or(0)
}

需要自定义成功或失败分支逻辑时,可以使用 match 处理这些值。

fn describe(result) -> String {
match result {
Result::Ok(value) => f"ok:{value}",
Result::Err(error) => f"error:{error}",
}
}

OptionResult,不要写 Option<T>Result<T, E>。Payload 的契约应放在函数、字段、宿主或显式验证边界。