Result 类型
与Option[Char]类似,枚举类型Result[Char, String]表示可能存在的字符值。当值缺失时,可携带String类型的错误信息。
其构造器包含两种形式:
Err("错误信息")表示值缺失并携带错误描述Ok('h')作为包装器包含实际值'h'
可以使用 value is Ok(_) 或 value is Err(_) 判断结果包含哪一种情况,并使用 unwrap() 从 Ok 中取出值。
当前示例中Option和Result的处理方式较为冗长且易出错。为安全、简洁地处理这些类型,推荐使用:
- 模式匹配 进行安全处理
- 错误处理 机制有效管理错误
这两个主题将在后续章节详细讲解。
fn first_char(s : String) -> Result[Char, String] {
if s.length() == 0 {
Err("empty string")
} else {
Ok(s.get_char(0).unwrap())
}
}
fn main {
let c1 = first_char("hello")
let c2 = first_char("")
println("\{c1 is Ok(_)}, \{to_repr(c1)}, \{c1.unwrap()}")
println("\{c2 is Err(_)}, \{to_repr(c2)}")
}