Crate layered_io[][src]

Expand description

I/O traits extending std::io::Read and std::io::Write.


Adapts an Read + Write to implement DuplexLayered.

Adapts an Read to implement ReadLayered.

Adapts an &[u8] to implement ReadLayered.


For interactivity, it’s desirable to avoid buffering data which is complete enough to be actionable. Activity allows writers to notify the API at points when the data provided is actionable and buffers should be flushed to the reader.

What is known about a stream in the future.


A trait to help with buffering on top of ReadLayered and WriteLayered.

A trait which simply combines ReadLayered, WriteLayered, and HalfDuplex.

An extension of Read, with read_with_status and read_vectored_with_status which return status information and zero is not special-cased. It also allows streams to specify a minimum_buffer_size.

An extension of std::io::Write, but adds a close function to allow the stream to be closed and any outstanding errors to be reported, without requiring a sync_all.


Default implementation of Read::is_read_vectored accompanying [default_read_vectored_with_status].

Default implementation of Read::read in terms of ReadLayered::read_with_status.

Default implementation of Read::read_to_string in terms of Read::read_to_end.

Default implementation of Bufferable::abandon, which does nothing.

Default implementation of Write::write_all, in terms of Write::write.

Default implementation of Write::write_vectored, in terms of Write::write.

Translate from read_with_status’s return value with independent size and status to a std::io::Read::read return value where 0 is special-cased to mean end-of-stream, an io::ErrorKind::Interrupted error is used to indicate a zero-length read, and pushes are not reported.