pub struct TinyAsciiString {
buf: [u8; 512],
}
impl TinyAsciiString {
pub fn new() -> Self {
Self { buf: [0_u8; 512] }
}
pub unsafe fn as_str(&self) -> &str {
::str::from_utf8_unchecked(&self.buf)
}
}
impl ::fmt::Write for TinyAsciiString {
fn write_str(&mut self, s: &str) -> Result<(), ::fmt::Error> {
for (idx, b) in s.bytes().enumerate() {
if let Some(mut v) = self.buf.get_mut(idx) {
*v = b;
} else {
return Err(::fmt::Error);
}
}
Ok(())
}
}
macro_rules! tiny_str {
($($t:tt)*) => (
{
use ::fmt::Write;
let mut s: ::macros::TinyAsciiString = ::macros::TinyAsciiString::new();
write!(&mut s, $($t)*).unwrap();
s
}
)
}