Expand description
Convert an io::Write
/io::Read
/io::Seek
to a libc::FILE
stream
using the fopencookie
syscall.
Great for passing rust traits across FFI.
let mut v = vec![];
let stream = fopencookie::IoCStream::writer(&mut v);
// Use the libc stream functions
assert_eq!(
unsafe {
libc::fprintf(stream.as_ptr(), c"hello, world!".as_ptr())
},
13 // all bytes written
);
// It's reflected in our rust type!
assert_eq!(v, b"hello, world!");
Trait objects are supported!
let mut reader: Box<dyn io::Read>;
let stream = fopencookie::IoCStream::reader(reader);
You can use the Builder
for more flexibility.
let mut file: File;
let stream = fopencookie::Builder::new()
.read()
.write()
.seek()
.build(file);
Structs§
- Builder
- Builder for
IoCStream
where you opt-in to forwardingio
traits from the underlying type. - IoCStream
- Compatibility layer between
io::Read
/io::Write
/io::Seek
andlibc::FILE
streams. - Unrecognised
Mode
Enums§
- Mode
- The modes supported by
fopencookie
.