summaryrefslogtreecommitdiff
path: root/nfa/src/error.rs
blob: 0c6bb3cec927338192965ab19c366b7c1133fe04 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
//! This file implements the error type for the crate.

use graph::error::Error as GError;

use std::fmt::{Display, Formatter};

#[derive(Debug, Clone, Eq, PartialEq, Ord, PartialOrd)]
/// The error type for NFA operations.
pub enum Error {
    /// An unknown node id is encountered.
    UnknownNode(usize),
    /// Some operations are not supported by the implementations.
    ///
    /// Everything is a trade-off, wink wink.
    UnsupportedOperation,
    /// This error comes from some underlying graph operation.
    Graph(GError),
}

impl Display for Error {
    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
        match self {
            Error::UnknownNode(id) => write!(f, "unknown node: {id}"),
            Error::UnsupportedOperation => write!(f, "unsupported operation"),
            Error::Graph(e) => write!(f, "graph error: {e}"),
        }
    }
}

impl std::error::Error for Error {}

impl From<GError> for Error {
    fn from(e: GError) -> Self {
        Self::Graph(e)
    }
}