pub trait GcovReader<E: Endian> {
// Required methods
fn read_string(&mut self) -> Result<String, GcovReaderError>;
fn read_u32(&mut self) -> Result<u32, GcovReaderError>;
fn read_counter(&mut self) -> Result<u64, GcovReaderError>;
fn get_version(&self, buf: &[u8]) -> u32;
fn read_version(&mut self) -> Result<u32, GcovReaderError>;
fn get_pos(&self) -> usize;
fn get_stem(&self) -> &str;
fn skip_u32(&mut self) -> Result<(), GcovReaderError>;
fn skip(&mut self, len: usize) -> Result<(), GcovReaderError>;
// Provided method
fn is_little_endian(&self) -> bool { ... }
}