Rust 的程式碼可能會用各種不同的方式來表示錯誤,但標準函式庫裡有一個通用的特徵 std::error::Error 用來描述錯誤。
使用智慧指標 Box,我們可以用型別 Box<dyn std::error::Error> 作為一個共通的型別來回傳錯誤, 因為它讓我們能夠把一個錯誤傳播到堆上,並且在不需要知道特定型別的情況下,用比較高的層次跟它互動。
在 Tour of Rust 一開始的時候,我們就學過 main 可以回傳一個錯誤。現在我們可以回傳一個型別, 只要這個錯誤的資料結構有實作 Rust 通用的 Error 特徵,這個型別就能夠描述幾乎任何可能在我們程式裡發生的錯誤。
fn main() -> Result<(), Box<dyn std::error::Error>>