diff options
Diffstat (limited to 'ffi/src/write_sink.rs')
-rw-r--r-- | ffi/src/write_sink.rs | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/ffi/src/write_sink.rs b/ffi/src/write_sink.rs new file mode 100644 index 0000000..b188498 --- /dev/null +++ b/ffi/src/write_sink.rs @@ -0,0 +1,20 @@ +pub struct InstructionSink<'buf> { + pub buf: &'buf mut [u8], + pub offs: usize, +} + +impl<'a> core::fmt::Write for InstructionSink<'a> { + fn write_str(&mut self, s: &str) -> core::fmt::Result { + for b in s.bytes() { + if self.offs < self.buf.len() { + self.buf[self.offs] = b; + self.offs += 1; + } else { + break; + } + } + + Ok(()) + } +} + |