use std::io::{self, Read, Write};
use byteorder::ReadBytesExt;
pub trait ReadableWriteable<ReadInput = (), WriteInput = ()>: Sized {
const VERSION: u8;
fn read<R: Read>(reader: R, input: ReadInput) -> io::Result<Self>;
fn write<W: Write>(&self, writer: W, input: WriteInput) -> io::Result<()>;
fn get_version<R: Read>(mut reader: R) -> io::Result<u8> {
let external_version = reader.read_u8()?;
if external_version > Self::VERSION {
Err(io::Error::new(
io::ErrorKind::InvalidData,
format!(
"Wallet file version \"{}\" is from future version of zingo",
external_version,
),
))
} else {
Ok(external_version)
}
}
}