[−][src]Crate filedescriptor
The purpose of this crate is to make it a bit more ergonomic for portable
applications that need to work with the platform level RawFd and
RawHandle types.
Rather than conditionally using RawFd and RawHandle, the FileDescriptor
type can be used to manage ownership, duplicate, read and write.
FileDescriptor
This is a bit of a contrived example, but demonstrates how to avoid
the conditional code that would otherwise be required to deal with
calling as_raw_fd and as_raw_handle:
use filedescriptor::{FileDescriptor, FromRawFileDescriptor}; use failure::Fallible; use std::io::Write; fn get_stdout() -> Fallible<FileDescriptor> { let stdout = std::io::stdout(); let handle = stdout.lock(); FileDescriptor::dup(&handle) } fn print_something() -> Fallible<()> { get_stdout()?.write(b"hello")?; Ok(()) }
Pipe
The Pipe type makes it more convenient to create a pipe and manage
the lifetime of both the read and write ends of that pipe.
use filedescriptor::Pipe; use std::io::{Read,Write}; use failure::Error; let mut pipe = Pipe::new()?; pipe.write.write(b"hello")?; drop(pipe.write); let mut s = String::new(); pipe.read.read_to_string(&mut s)?; assert_eq!(s, "hello");
Structs
| FileDescriptor |
|
| OwnedHandle |
|
| Pipe | Represents the readable and writable ends of a pair of descriptors connected via a kernel pipe. |
Traits
| AsRawFileDescriptor |
|
| FromRawFileDescriptor |
|
| IntoRawFileDescriptor |
|
Type Definitions
| RawFileDescriptor |
|