Struct io_streams::StreamDuplexer [−][src]
An unbuffered and unlocked interactive combination input and output stream.
This may hold two file descriptors, one for reading and one for writing, such as stdin and stdout, or it may hold one file handle for both reading and writing, such as for a TCP socket.
There is no file
constructor, even though File
implements both Read
and Write
, because normal files are not interactive. However, there is a
char_device
constructor for character device files.
Implementations
impl StreamDuplexer
[src]
pub fn stdin_stdout() -> Result<Self>
[src]
Duplex with stdin and stdout, taking ownership of them.
Unlike std::io::stdin
and std::io::stdout
, this stdin_stdout
returns a stream which is unbuffered and unlocked.
This acquires a std::io::StdinLock
and a std::io::StdoutLock
to
prevent accesses to std::io::Stdin
and std::io::Stdout
while
this is live, and fails if a StreamReader
for standard input, a
StreamWriter
for standard output, or a StreamDuplexer
for standard
input and standard output already exist.
#[must_use]pub fn tcp_stream<Socketlike: IntoUnsafeSocket>(socketlike: Socketlike) -> Self
[src]
Duplex with an open TCP stream, taking ownership of it.
This method can be passed a std::net::TcpStream
or similar
TcpStream
types.
#[must_use]pub fn pipe_reader_writer(
pipe_reader: PipeReader,
pipe_writer: PipeWriter
) -> Self
[src]
pipe_reader: PipeReader,
pipe_writer: PipeWriter
) -> Self
Duplex with a pair of pipe streams, taking ownership of them.
pub fn duplex_with_command(mut command: Command) -> Result<Self>
[src]
Spawn the given command and duplex with its standard input and output.
#[must_use]pub fn child_stdout_stdin(
child_stdout: ChildStdout,
child_stdin: ChildStdin
) -> Self
[src]
child_stdout: ChildStdout,
child_stdin: ChildStdin
) -> Self
Duplex with a child process' stdout and stdin, taking ownership of them.
Trait Implementations
impl AsRawReadWriteHandleOrSocket for StreamDuplexer
[src]
fn as_raw_read_handle_or_socket(&self) -> RawHandleOrSocket
[src]
fn as_raw_write_handle_or_socket(&self) -> RawHandleOrSocket
[src]
impl Debug for StreamDuplexer
[src]
impl Duplex for StreamDuplexer
[src]
impl Peek for StreamDuplexer
[src]
impl Read for StreamDuplexer
[src]
fn read(&mut self, buf: &mut [u8]) -> Result<usize>
[src]
fn read_vectored(&mut self, bufs: &mut [IoSliceMut<'_>]) -> Result<usize>
[src]
fn is_read_vectored(&self) -> bool
[src]
fn read_to_end(&mut self, buf: &mut Vec<u8>) -> Result<usize>
[src]
fn read_to_string(&mut self, buf: &mut String) -> Result<usize>
[src]
fn read_exact(&mut self, buf: &mut [u8]) -> Result<()>
[src]
pub unsafe fn initializer(&self) -> Initializer
[src]
pub fn by_ref(&mut self) -> &mut Self
1.0.0[src]
pub fn bytes(self) -> Bytes<Self>
1.0.0[src]
pub fn chain<R>(self, next: R) -> Chain<Self, R> where
R: Read,
1.0.0[src]
R: Read,
pub fn take(self, limit: u64) -> Take<Self>
1.0.0[src]
impl ReadReady for StreamDuplexer
[src]
fn num_ready_bytes(&self) -> Result<u64>
[src]
impl Write for StreamDuplexer
[src]
fn write(&mut self, buf: &[u8]) -> Result<usize>
[src]
fn flush(&mut self) -> Result<()>
[src]
fn write_vectored(&mut self, bufs: &[IoSlice<'_>]) -> Result<usize>
[src]
fn is_write_vectored(&self) -> bool
[src]
fn write_all(&mut self, buf: &[u8]) -> Result<()>
[src]
fn write_all_vectored(&mut self, bufs: &mut [IoSlice<'_>]) -> Result<()>
[src]
fn write_fmt(&mut self, fmt: Arguments<'_>) -> Result<()>
[src]
pub fn by_ref(&mut self) -> &mut Self
1.0.0[src]
Auto Trait Implementations
impl !RefUnwindSafe for StreamDuplexer
[src]
impl Send for StreamDuplexer
[src]
impl Sync for StreamDuplexer
[src]
impl Unpin for StreamDuplexer
[src]
impl !UnwindSafe for StreamDuplexer
[src]
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> AsUnsafeReadWriteHandle for T where
T: AsRawReadWriteHandleOrSocket,
[src]
T: AsRawReadWriteHandleOrSocket,
pub fn as_unsafe_read_handle(&self) -> UnsafeHandle
[src]
pub fn as_unsafe_write_handle(&self) -> UnsafeHandle
[src]
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T> HalfDuplex for T where
T: Duplex + Read + Write,
[src]
T: Duplex + Read + Write,
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,