Trait Compress

Source
pub trait Compress {
    // Required method
    fn compress(&self, buf: &mut Compressor) -> Result<(), ShortBuf>;
}
Expand description

A type that knows how to compress itself.

The term compressing refers to the process of producing the DNS wire-format representation of a value’s data allowing it to optionally employ domain name compression.

Because BufMut doesn’t allow looking back at the data added to the message before, compression cannot be implemented using just Compose. Instead, a special type, Compressor is provided that implements all the necessary logic for name compression.

Compress should only be implemented for domain name types or types that contain or may contain domain names and want to support name compression. For all other types, Compressor::compose uses their Compose implementation for appending.

Required Methods§

Source

fn compress(&self, buf: &mut Compressor) -> Result<(), ShortBuf>

Appends the wire-format representation of the value to buf.

If buf does not have enough space available for appending the representation, the method returns an error. If this happens, some data may have been appended to the buffer.

For implementers of composite types, this means that they can simply compress or compose their consitutent types onto buf bailing out if that fails. There is no need to truncate buf back to its prior state on failure.

Implementations on Foreign Types§

Source§

impl<'a, C: Compress + 'a> Compress for &'a C

Source§

fn compress(&self, buf: &mut Compressor) -> Result<(), ShortBuf>

Implementors§

Source§

impl Compress for A

Source§

impl Compress for Hinfo

Source§

impl Compress for Null

Source§

impl Compress for Txt

Source§

impl Compress for Wks

Source§

impl Compress for Aaaa

Source§

impl Compress for Dnskey

Source§

impl Compress for Ds

Source§

impl Compress for Nsec

Source§

impl Compress for Rrsig

Source§

impl Compress for RtypeBitmap

Source§

impl Compress for Nsec3

Source§

impl Compress for Nsec3param

Source§

impl Compress for Dname

Source§

impl Compress for ParsedDname

Source§

impl Compress for Opt

Source§

impl Compress for UnknownRecordData

Source§

impl<L: ToRelativeDname, R: ToDname> Compress for Chain<L, R>

Source§

impl<N> Compress for AllRecordData<N>
where N: Compress,

Source§

impl<N> Compress for MasterRecordData<N>
where N: Compress,

Source§

impl<N: ToDname> Compress for Question<N>

Source§

impl<N: ToDname, D: RecordData + Compress> Compress for Record<N, D>

Source§

impl<N: Compress> Compress for Cname<N>

Source§

impl<N: Compress> Compress for Mb<N>

Source§

impl<N: Compress> Compress for Md<N>

Source§

impl<N: Compress> Compress for Mf<N>

Source§

impl<N: Compress> Compress for Mg<N>

Source§

impl<N: Compress> Compress for Minfo<N>

Source§

impl<N: Compress> Compress for Mr<N>

Source§

impl<N: Compress> Compress for Mx<N>

Source§

impl<N: Compress> Compress for Ns<N>

Source§

impl<N: Compress> Compress for Ptr<N>

Source§

impl<N: Compress> Compress for Soa<N>

Source§

impl<N: Compress> Compress for Srv<N>

Source§

impl<N: Compress> Compress for RecordHeader<N>

Source§

impl<R: ToDname> Compress for Chain<UncertainDname, R>