1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
use std::io::{Result, Write};
pub trait Parsable<'a>: Sized {
fn parse(s: &'a str) -> Option<(Self, usize)>;
}
pub trait Serializable {
fn dump<W: Write>(&self, fp: W) -> Result<()>;
}
impl<A: Serializable, B: Serializable> Serializable for (A, B) {
fn dump<W: Write>(&self, mut fp: W) -> Result<()> {
self.0.dump(&mut fp)?;
write!(fp, "|")?;
self.1.dump(&mut fp)
}
}