aboutsummaryrefslogtreecommitdiff
path: root/ffi/src/write_sink.rs
diff options
context:
space:
mode:
Diffstat (limited to 'ffi/src/write_sink.rs')
-rw-r--r--ffi/src/write_sink.rs20
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(())
+ }
+}
+