diff --git a/src/base/message_builder.rs b/src/base/message_builder.rs index 21ff700ce..32566c11a 100644 --- a/src/base/message_builder.rs +++ b/src/base/message_builder.rs @@ -2373,6 +2373,15 @@ impl Truncate for TreeCompressor { } } +#[cfg(feature = "std")] +impl FreezeBuilder for TreeCompressor { + type Octets = Target::Octets; + + fn freeze(self) -> Self::Octets { + self.target.freeze() + } +} + //------------ HashCompressor ------------------------------------------------ /// A domain name compressor that uses a hash table. @@ -2639,6 +2648,15 @@ impl Truncate for HashCompressor { } } +#[cfg(feature = "std")] +impl FreezeBuilder for HashCompressor { + type Octets = Target::Octets; + + fn freeze(self) -> Self::Octets { + self.target.freeze() + } +} + //============ Errors ======================================================== /// An error occurred when attempting to add data to a message. @@ -2880,6 +2898,22 @@ mod test { assert_eq!(&expect[..], msg.as_ref()); } + // just check into_message compiles for all compressors + #[test] + fn compressor_into_message() { + let target = StaticCompressor::new(Vec::new()); + let _msg = + MessageBuilder::from_target(target).unwrap().into_message(); + + let target = TreeCompressor::new(Vec::new()); + let _msg = + MessageBuilder::from_target(target).unwrap().into_message(); + + let target = HashCompressor::new(Vec::new()); + let _msg = + MessageBuilder::from_target(target).unwrap().into_message(); + } + #[test] fn compress_positive_response() { // An example positive response to `A example.com.` that is compressed