field-cat 0.1.0

Finite field algebra shared across plonkish-cat, proof-cat, and stark-cat
Documentation
//! Project-wide error type.

/// All errors that can arise in field-cat.
#[derive(Debug)]
pub enum Error {
    /// Attempted to invert zero in the field.
    DivisionByZero,
    /// Field element could not be decoded from bytes.
    InvalidFieldEncoding,
}

impl core::fmt::Display for Error {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        match self {
            Self::DivisionByZero => write!(f, "division by zero"),
            Self::InvalidFieldEncoding => write!(f, "invalid field element encoding"),
        }
    }
}

impl std::error::Error for Error {
    fn source(&self) -> Option<&(dyn std::error::Error + 'static)> {
        match self {
            Self::DivisionByZero | Self::InvalidFieldEncoding => None,
        }
    }
}