aboutsummaryrefslogtreecommitdiff
path: root/src/never.rs
blob: 85a124382c02e905bf123c5c90739149647624ae (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
use std::error;
use std::fmt;

/// Definition of an empty enum.
///
/// This is used as the error type in situations where there can't be an error. A `Result<T, Never>`
/// can be safely unwrapped and the `unwrap()` may be optimized away entirely.
pub enum Never {}

impl fmt::Display for Never {
    fn fmt(&self, _: &mut fmt::Formatter<'_>) -> Result<(), std::fmt::Error> {
        match *self {}
    }
}
impl fmt::Debug for Never {
    fn fmt(&self, _: &mut fmt::Formatter<'_>) -> Result<(), std::fmt::Error> {
        match *self {}
    }
}

impl error::Error for Never {}