pub trait Writeable {
// Required method
fn write_onto<B: Writer + ?Sized>(&self, b: &mut B) -> EncodeResult<()>;
}
Expand description
Trait for an object that can be encoded onto a Writer by reference.
Implement this trait in order to make an object writeable.
Most code won’t need to call this directly, but will instead use it implicitly via the Writer::write() method.
§Example
use tor_bytes::{Writeable, Writer, EncodeResult};
#[derive(Debug, Eq, PartialEq)]
struct Message {
flags: u32,
cmd: u8
}
impl Writeable for Message {
fn write_onto<B:Writer+?Sized>(&self, b: &mut B) -> EncodeResult<()> {
// We'll say that a "Message" is encoded as flags, then command.
b.write_u32(self.flags);
b.write_u8(self.cmd);
Ok(())
}
}
let msg = Message { flags: 0x43, cmd: 0x07 };
let mut writer: Vec<u8> = Vec::new();
writer.write(&msg);
assert_eq!(writer, &[0x00, 0x00, 0x00, 0x43, 0x07 ]);
Required Methods§
Sourcefn write_onto<B: Writer + ?Sized>(&self, b: &mut B) -> EncodeResult<()>
fn write_onto<B: Writer + ?Sized>(&self, b: &mut B) -> EncodeResult<()>
Encode this object into the writer b
.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.
Implementations on Foreign Types§
Source§impl Writeable for u8
impl Writeable for u8
fn write_onto<B: Writer + ?Sized>(&self, b: &mut B) -> EncodeResult<()>
Source§impl Writeable for u16
impl Writeable for u16
fn write_onto<B: Writer + ?Sized>(&self, b: &mut B) -> EncodeResult<()>
Source§impl Writeable for u32
impl Writeable for u32
fn write_onto<B: Writer + ?Sized>(&self, b: &mut B) -> EncodeResult<()>
Source§impl Writeable for u64
impl Writeable for u64
fn write_onto<B: Writer + ?Sized>(&self, b: &mut B) -> EncodeResult<()>
Source§impl Writeable for u128
impl Writeable for u128
fn write_onto<B: Writer + ?Sized>(&self, b: &mut B) -> EncodeResult<()>
Source§impl Writeable for PublicKey
Available on crate feature tor-llcrypto
only.
impl Writeable for PublicKey
Available on crate feature
tor-llcrypto
only.fn write_onto<B: Writer + ?Sized>(&self, b: &mut B) -> EncodeResult<()>
fn write_onto<B: Writer + ?Sized>(&self, b: &mut B) -> EncodeResult<()>
Source§impl Writeable for Ed25519Identity
Available on crate feature tor-llcrypto
only.
impl Writeable for Ed25519Identity
Available on crate feature
tor-llcrypto
only.fn write_onto<B: Writer + ?Sized>(&self, b: &mut B) -> EncodeResult<()>
Source§impl Writeable for PublicKey
Available on crate feature tor-llcrypto
only.
impl Writeable for PublicKey
Available on crate feature
tor-llcrypto
only.fn write_onto<B: Writer + ?Sized>(&self, b: &mut B) -> EncodeResult<()>
Source§impl Writeable for Signature
Available on crate feature tor-llcrypto
only.
impl Writeable for Signature
Available on crate feature
tor-llcrypto
only.fn write_onto<B: Writer + ?Sized>(&self, b: &mut B) -> EncodeResult<()>
Source§impl Writeable for RsaIdentity
Available on crate feature tor-llcrypto
only.
impl Writeable for RsaIdentity
Available on crate feature
tor-llcrypto
only.fn write_onto<B: Writer + ?Sized>(&self, b: &mut B) -> EncodeResult<()>
Source§impl Writeable for Vec<u8>
impl Writeable for Vec<u8>
fn write_onto<B: Writer + ?Sized>(&self, b: &mut B) -> EncodeResult<()>
Source§impl Writeable for Ipv4Addr
impl Writeable for Ipv4Addr
fn write_onto<B: Writer + ?Sized>(&self, b: &mut B) -> EncodeResult<()>
Source§impl Writeable for Ipv6Addr
impl Writeable for Ipv6Addr
fn write_onto<B: Writer + ?Sized>(&self, b: &mut B) -> EncodeResult<()>
Source§impl Writeable for [u8]
impl Writeable for [u8]
fn write_onto<B: Writer + ?Sized>(&self, b: &mut B) -> EncodeResult<()>
Source§impl<N> Writeable for GenericArray<u8, N>where
N: ArrayLength<u8>,
impl<N> Writeable for GenericArray<u8, N>where
N: ArrayLength<u8>,
fn write_onto<B: Writer + ?Sized>(&self, b: &mut B) -> EncodeResult<()>
Source§impl<W: Writeable + ?Sized> Writeable for &W
impl<W: Writeable + ?Sized> Writeable for &W
fn write_onto<B: Writer + ?Sized>(&self, b: &mut B) -> EncodeResult<()>
Source§impl<const N: usize> Writeable for CtByteArray<N>
Available on crate feature tor-llcrypto
only.
impl<const N: usize> Writeable for CtByteArray<N>
Available on crate feature
tor-llcrypto
only.