glifparser 2.0.1

A parser and writer for UFO `.glif` files
Documentation
use std::error::Error;
use std::fmt;

#[cfg(feature = "glifserde")]
use serde::{Deserialize, Serialize};

#[repr(u8)]
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub enum UpgradeContourOpsError {
    MoreContoursThanOps,
    MoreOpsThanContours,
    MoreLayersThanVecOps,
    MoreVecOpsThanLayers,
}

impl fmt::Display for UpgradeContourOpsError {
    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> Result<(), fmt::Error> {
        let (over, under) = match self {
            Self::MoreContoursThanOps => ("contours in outline", "contour operations in list"),
            Self::MoreOpsThanContours => ("contour operations in list", "contours in outline"),
            Self::MoreLayersThanVecOps => ("layers in glyph", "lists of contour operations in list"),
            Self::MoreVecOpsThanLayers => ("lists of contour operations in list", "layers in glyph"),
        };
        write!(
            f,
            "Mismatch while upgrading contour ops: more {} than {}!",
            over, under
        )
    }
}

impl Error for UpgradeContourOpsError {}