use std::borrow::BorrowMut;
use crate::*;
pub trait ParseValue : Parse + PartialEq {
fn parse_value(&self, position: &mut Position) -> Result<Self>
where Self : 'static + PartialEq + Clone {
let self_maybe = Self::parse(position.clone().borrow_mut());
match self_maybe {
Ok(ok) => {
use std::any::type_name;
let error = Error::unexpected::<Self>(position.clone());
if ok != self.clone() { Err(error) }
else { Ok(ok) }
},
Err(error) => Err(error)
}
}
}
impl<P : Parse + PartialEq> ParseValue for P {}