use fmt;
use crate;
/// Coerces the output of a parser to another value.
///
/// # Examples
///
/// ```rust
/// # use kamo::parser::{
/// # prelude::*, code, CharacterError, Input, Position
/// # };
/// let mut parser = value('a', char('b'));
///
/// assert_eq!(parser.parse("bac".into()), Ok(('a', Input::from("ac"))));
/// assert_eq!(parser.parse("abc".into()), Err(ParseError::new(
/// Position::new(0, 1, 1),
/// code::ERR_CHAR,
/// CharacterError::Char('b')
/// )));
/// assert_eq!(parser.parse("".into()),
/// Err(ParseError::eof(Position::new(0, 1, 1))));
/// ```