use core::fmt::{self, Write};
mod allocator;
mod handlers;
mod helpers;
pub use helpers::*;
mod state;
pub use state::*;
#[cfg(feature = "debug")]
#[cfg_attr(docsrs, doc(cfg(feature = "debug")))]
mod debug;
#[cfg(feature = "debug")]
pub use debug::*;
#[derive(Default)]
pub struct ArgbufWriter(usize);
impl ArgbufWriter {
pub fn ofs(&self) -> usize {
self.0
}
}
impl Write for ArgbufWriter {
fn write_str(&mut self, s: &str) -> fmt::Result {
let bytes = s.as_bytes();
let bytes_len = bytes.len();
let new_ofs = self.0 + bytes_len;
if new_ofs > crate::ARGBUF_LEN {
return Err(fmt::Error);
}
state::with_arg_buf(|buf| {
buf[self.0..new_ofs].copy_from_slice(bytes);
});
self.0 = new_ofs;
Ok(())
}
}