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 37 38 39 40 41 42 43 44 45 46 47
//! This module contains error related structs. //! //! Currently, this module defines `ParsingError`, whos only purpose is to be displayed to a user. //! //! # Example //! //! This code ... //! //! ``` //! use abnf::rule; //! //! let error = rule("bad-rule = *a]").unwrap_err(); //! //! println!("{}", error); //! ``` //! //! ... will print ... //! //! ```text //! 0: at line 0, in Tag: //! bad-rule = *a] //! ^ //! //! 1: at line 0, in Alt: //! bad-rule = *a] //! ^ //! //! 2: at line 0, in Alt: //! bad-rule = *a] //! ^ //! ``` //! //! **Note**: `ParsingError` is in fact just `Nom`'s `VerboseError` in disguise. //! Currently, it is a best effort solution to give a rough idea where the erroneous syntax is. use std::fmt; /// A generic parsing error. pub struct ParseError { pub(crate) message: String, } impl fmt::Display for ParseError { fn fmt(&self, f: &mut fmt::Formatter) -> Result<(), fmt::Error> { write!(f, "{}", self.message) } }