9 月 2021

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)
    }
}

比較有趣的是應用的部份。

Read More