use std::io::{Read, Write};
pub struct RustReader {
inner: *mut dyn Read,
}
impl RustReader {
pub fn from_ref<'a>(reader: &'a mut (dyn Read + 'a)) -> Self {
RustReader { inner: unsafe { std::mem::transmute::<*mut (dyn Read + 'a), *mut (dyn Read + 'static)>(reader as *mut (dyn Read + 'a)) } }
}
}
pub struct RustWriter {
inner: *mut dyn Write,
}
impl RustWriter {
pub fn from_ref<'a>(writer: &'a mut (dyn Write + 'a)) -> Self {
RustWriter { inner: unsafe { std::mem::transmute::<*mut (dyn Write + 'a), *mut (dyn Write + 'static)>(writer as *mut (dyn Write + 'a)) } }
}
}
pub fn rust_reader_read(reader: &mut RustReader, buf: &mut [u8]) -> usize {
unsafe { (*reader.inner).read(buf).unwrap_or(0) }
}
pub fn rust_writer_write(writer: &mut RustWriter, buf: &[u8]) -> usize {
unsafe { (*writer.inner).write(buf).unwrap_or(0) }
}