Rustlings 習題探討:errors6.rs
主要是要練習如何撰寫及應用 error conversion。
整個程式是要實作一個新的型別 PositiveNonzeroInteger
,意即「正整數」;0 或負整數都不是合法的。這個正整數要從字串 parsing 而來。如果 parsing 時就出問題,要把 parse()
的 error 轉換成 ParsePosNonezeroError::ParseInt()
;而如果 parsing 沒問題,但數值本身是 0 或負整數的話,就要回傳 ParsePosNonezeroError::Creation()
(依據數值是 0 或負整數,會代不同的 error code)。
Conversion 的部份很單純:
impl ParsePosNonzeroError {
fn from_creation(err: CreationError) -> ParsePosNonzeroError {
ParsePosNonzeroError::Creation(err)
}
fn from_parsing(err: ParseIntError) -> ParsePosNonzeroError {
ParsePosNonzeroError::ParseInt(err)
}
}
比較有趣的是應用的部份。