use std::fmt;
use writeable::assert_writeable_eq;
use writeable::LengthHint;
use writeable::Writeable;
struct WriteableMessage<'s> {
message: &'s str,
}
impl Writeable for WriteableMessage<'_> {
fn write_to<W: fmt::Write + ?Sized>(&self, sink: &mut W) -> fmt::Result {
sink.write_str(self.message)
}
fn writeable_length_hint(&self) -> LengthHint {
LengthHint::exact(self.message.len())
}
}
writeable::impl_display_with_writeable!(WriteableMessage<'_>);
#[test]
fn test_basic() {
let input_string = "hello world";
let message = WriteableMessage {
message: input_string,
};
assert_writeable_eq!(&message, input_string);
}
struct DelegatedMessage<'s>(WriteableMessage<'s>);
writeable::impl_writeable_delegate!(DelegatedMessage<'_>, |&self| &self.0);
writeable::impl_display_with_writeable!(DelegatedMessage<'_>);
#[test]
fn test_delegated() {
let input_string = "hello world 2";
let message = DelegatedMessage(WriteableMessage {
message: input_string,
});
assert_writeable_eq!(&message, input_string);
}