本文簡要介紹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 IntoKeys用法及代碼示例
- Rust IntoIter.as_mut_slice用法及代碼示例
- Rust IntErrorKind用法及代碼示例
- Rust Intersection用法及代碼示例
- Rust IntoInnerError.error用法及代碼示例
- Rust Into用法及代碼示例
- Rust Incoming用法及代碼示例
- Rust IntoIter.new用法及代碼示例
- Rust Instant.checked_duration_since用法及代碼示例
- Rust Index用法及代碼示例
- Rust IntoValues用法及代碼示例
- Rust IntoIterator.into_iter用法及代碼示例
- Rust Instant.now用法及代碼示例
- Rust IntoInnerError.into_inner用法及代碼示例
- Rust Instant.saturating_duration_since用法及代碼示例
- Rust IntoInnerError.into_parts用法及代碼示例
- Rust IntoIter.as_slice用法及代碼示例
- Rust IntoIterator用法及代碼示例
- Rust IntoIter用法及代碼示例
- Rust Instant.duration_since用法及代碼示例
- Rust IntoRawFd.into_raw_fd用法及代碼示例
- Rust IntoInnerError.into_error用法及代碼示例
- Rust Instant用法及代碼示例
- Rust IntoInnerError用法及代碼示例
- Rust IndexMut用法及代碼示例
注:本文由純淨天空篩選整理自rust-lang.org大神的英文原創作品 Enum core::convert::Infallible。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。