當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Rust Infallible用法及代碼示例


本文簡要介紹rust語言中 Enum core::convert::Infallible 的用法。

用法

pub enum Infallible {}

永遠不會發生的錯誤的錯誤類型。

由於此枚舉沒有變體,因此這種類型的值永遠不會真正存在。這對於使用 Result 並參數化錯誤類型的通用 API 很有用,以指示結果始終為 Ok

例如, TryFrom 特征(返回 Result 的轉換)對存在反向 Into 實現的所有類型都有一個全麵的實現。

impl<T, U> TryFrom<U> for T where U: Into<T> {
    type Error = Infallible;

    fn try_from(value: U) -> Result<Self, Infallible> {
        Ok(U::into(value))  // Never returns `Err`
    }
}

未來的兼容性

該枚舉的作用與! “never” 類型,在此版本的 Rust 中不穩定。什麽時候!已經穩定下來,我們計劃Infallible它的類型別名:

pub type Infallible = !;

…並最終棄用 Infallible

然而,在一種情況下,在 ! 穩定為成熟類型之前可以使用 ! 語法:在函數返回類型的位置。具體來說,可以實現兩種不同的函數指針類型:

trait MyTrait {}
impl MyTrait for fn() -> ! {}
impl MyTrait for fn() -> std::convert::Infallible {}

Infallible 是一個枚舉,此代碼是有效的。但是,當 Infallible 成為 never 類型的別名時,兩個 impl 將開始重疊,因此語言的特征一致性規則將不允許這樣做。

相關用法


注:本文由純淨天空篩選整理自rust-lang.org大神的英文原創作品 Enum core::convert::Infallible。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。