34 lines
929 B
Rust
34 lines
929 B
Rust
// This file is part of ICU4X. For terms of use, please see the file
|
|
// called LICENSE at the top level of the ICU4X source tree
|
|
// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
|
|
|
|
use std::fmt;
|
|
use writeable::assert_writeable_eq;
|
|
use writeable::LengthHint;
|
|
use writeable::Writeable;
|
|
|
|
/// A sample type implementing 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);
|
|
}
|