#![crate_type = "lib"] pub trait Decoder { type Error; fn read_enum(&mut self, name: &str, f: F) -> Result where F: FnOnce(&mut Self) -> Result; fn read_enum_variant(&mut self, names: &[&str], f: F) -> Result where F: FnMut(&mut Self, usize) -> Result; } pub trait Decodable: Sized { fn decode(d: &mut D) -> Result; }