pub trait Encode {
// Required methods
fn encoded_size(&self) -> usize;
fn encode(&self, buf: &mut WriteBuf<'_>) -> Result<()>;
}Expand description
A value that can be written to a WriteBuf.
Implementors must guarantee that Encode::encoded_size returns the exact
number of bytes Encode::encode writes on success.
§Example
use wire_codec::{Encode, Result, WriteBuf};
struct Tagged {
tag: u8,
value: u32,
}
impl Encode for Tagged {
fn encoded_size(&self) -> usize { 5 }
fn encode(&self, buf: &mut WriteBuf<'_>) -> Result<()> {
buf.write_u8(self.tag)?;
buf.write_u32_be(self.value)
}
}
let mut out = [0u8; 5];
let mut buf = WriteBuf::new(&mut out);
Tagged { tag: 0x01, value: 0xCAFEBABE }.encode(&mut buf).unwrap();
assert_eq!(&out, &[0x01, 0xCA, 0xFE, 0xBA, 0xBE]);Required Methods§
Sourcefn encoded_size(&self) -> usize
fn encoded_size(&self) -> usize
Number of bytes Encode::encode will write on success.