Struct basic_text::TextDuplexer[][src]

pub struct TextDuplexer<Inner: HalfDuplex + ReadStr + WriteStr> { /* fields omitted */ }
Expand description

A HalfDuplex implementation which translates from an input HalfDuplex implementation producing an arbitrary byte sequence into a valid Basic Text stream.

Implementations

impl<Inner: HalfDuplex> TextDuplexer<Utf8Duplexer<LayeredDuplexer<Inner>>>[src]

pub fn new(inner: Inner) -> Self[src]

Construct a new instance of TextDuplexer wrapping inner, which can be anything that implements HalfDuplex.

pub fn with_bom_compatibility(inner: Inner) -> Result<Self>[src]

Like new, but writes a U+FEFF (BOM) to the beginning of the output stream for compatibility with consumers that require that to determine the text encoding.

pub fn with_crlf_compatibility(inner: Inner) -> Self[src]

Like new, but enables CRLF output mode, which translates “\n” to “\r\n” for compatibility with consumers that need that.

Note: This is not often needed; even on Windows these days most things are ok with plain ‘\n’ line endings, including Windows Notepad. The main notable things that really need them are IETF RFCs, for example RFC-5198.

pub fn with_nel_compatibility(inner: Inner) -> Result<Self>[src]

Like new, but replaces U+85 (NEL) with U+A instead of U+20.

pub fn with_lsps_compatibility(inner: Inner) -> Result<Self>[src]

Like new, but replaces U+2028 (LS) and U+2029 (PS) with U+A instead of U+20.

impl<Inner: HalfDuplex + ReadStr + ReadLayered + ReadStrLayered + WriteStr + WriteLayered> TextDuplexer<Inner>[src]

pub fn from_utf8(inner: Inner) -> Self[src]

Construct a new instance of TextDuplexer wrapping inner.

pub fn from_utf8_with_bom_compatibility(inner: Inner) -> Result<Self>[src]

Like from_utf8, but writes a U+FEFF (BOM) to the beginning of the output stream for compatibility with consumers that require that to determine the text encoding.

pub fn from_utf8_with_crlf_compatibility(inner: Inner) -> Self[src]

Like from_utf8, but enables CRLF output mode, which translates “\n” to “\r\n” for compatibility with consumers that need that.

Note: This is not often needed; even on Windows these days most things are ok with plain ‘\n’ line endings, including Windows Notepad. The main notable things that really need them are IETF RFCs, for example RFC-5198.

pub fn from_utf8_with_nel_compatibility(inner: Inner) -> Result<Self>[src]

Like from_utf8, but replaces U+85 (NEL) with U+A instead of U+20.

pub fn from_utf8_with_lsps_compatibility(inner: Inner) -> Result<Self>[src]

Like from_utf8, but replaces U+2028 (LS) and U+2029 (PS) with U+A instead of U+20.

pub fn close_into_inner(self) -> Result<Inner>[src]

Flush and close the underlying stream and return the underlying stream object.

pub fn abandon_into_inner(self) -> Inner[src]

Return the underlying stream object.

Trait Implementations

impl<Inner: HalfDuplexLayered + ReadStr + WriteStr + AsRawFd> AsRawFd for TextDuplexer<Inner>[src]

fn as_raw_fd(&self) -> RawFd[src]

Extracts the raw file descriptor. Read more

impl<Inner: HalfDuplexLayered + ReadStrLayered + WriteStr> Bufferable for TextDuplexer<Inner>[src]

fn suggested_buffer_size(&self) -> usize[src]

A suggested size, in bytes, for buffering for performance.

fn abandon(&mut self)[src]

Close the resource and abandon any pending buffered contents or errors.

impl<Inner: HalfDuplexLayered + ReadStr + WriteStr + Debug> Debug for TextDuplexer<Inner>[src]

fn fmt(&self, f: &mut Formatter<'_>) -> Result[src]

Formats the value using the given formatter. Read more

impl<Inner: HalfDuplexLayered + ReadStrLayered + WriteStr> Read for TextDuplexer<Inner>[src]

fn read(&mut self, buf: &mut [u8]) -> Result<usize>[src]

Pull some bytes from this source into the specified buffer, returning how many bytes were read. Read more

fn read_to_end(&mut self, buf: &mut Vec<u8>) -> Result<usize>[src]

Read all bytes until EOF in this source, placing them into buf. Read more

fn read_to_string(&mut self, buf: &mut String) -> Result<usize>[src]

Read all bytes until EOF in this source, appending them to buf. Read more

fn read_vectored(&mut self, bufs: &mut [IoSliceMut<'_>]) -> Result<usize, Error>1.36.0[src]

Like read, except that it reads into a slice of buffers. Read more

fn is_read_vectored(&self) -> bool[src]

🔬 This is a nightly-only experimental API. (can_vector)

Determines if this Reader has an efficient read_vectored implementation. Read more

unsafe fn initializer(&self) -> Initializer[src]

🔬 This is a nightly-only experimental API. (read_initializer)

Determines if this Reader can work with buffers of uninitialized memory. Read more

fn read_exact(&mut self, buf: &mut [u8]) -> Result<(), Error>1.6.0[src]

Read the exact number of bytes required to fill buf. Read more

fn by_ref(&mut self) -> &mut Self1.0.0[src]

Creates a “by reference” adaptor for this instance of Read. Read more

fn bytes(self) -> Bytes<Self>1.0.0[src]

Transforms this Read instance to an Iterator over its bytes. Read more

fn chain<R>(self, next: R) -> Chain<Self, R> where
    R: Read
1.0.0[src]

Creates an adaptor which will chain this stream with another. Read more

fn take(self, limit: u64) -> Take<Self>1.0.0[src]

Creates an adaptor which will read at most limit bytes from it. Read more

impl<Inner: HalfDuplexLayered + ReadStrLayered + WriteStr> ReadLayered for TextDuplexer<Inner>[src]

fn read_with_status(&mut self, buf: &mut [u8]) -> Result<(usize, Status)>[src]

Like Read::read, but also returns a Status.

fn minimum_buffer_size(&self) -> usize[src]

Some streams require a buffer of at least a certain size.

fn read_vectored_with_status(
    &mut self,
    bufs: &mut [IoSliceMut<'_>]
) -> Result<(usize, Status), Error>
[src]

Like Read::read_vectored, but also returns a Status.

fn read_exact_using_status(&mut self, buf: &mut [u8]) -> Result<Status, Error>[src]

Like Read::read_exact, but uses read_with_status to avoid performing an extra read at the end. Read more

impl<Inner: HalfDuplexLayered + ReadStrLayered + WriteStr> ReadStr for TextDuplexer<Inner>[src]

fn read_str(&mut self, buf: &mut str) -> Result<usize>[src]

Like read but produces the result in a str. Be sure to check the size field of the return value to see how many bytes were written. Read more

fn read_exact_str(&mut self, buf: &mut str) -> Result<()>[src]

Like read_exact but produces the result in a str.

impl<Inner: HalfDuplexLayered + ReadStrLayered + WriteStr> ReadStrLayered for TextDuplexer<Inner>[src]

fn read_str_with_status(&mut self, buf: &mut str) -> Result<(usize, Status)>[src]

Like read_with_status but produces the result in a str. Be sure to check the return value to see how many bytes were written. Read more

fn read_exact_str_using_status(&mut self, buf: &mut str) -> Result<Status>[src]

Like read_exact but produces the result in a str. Read more

impl<Inner: HalfDuplexLayered + ReadStrLayered + WriteStr> ReadText for TextDuplexer<Inner>[src]

fn read_text_substr(&mut self, buf: &mut TextSubstr) -> Result<usize>[src]

Like read_str but for reading Basic Text content. Note that the resulting data may not be a Basic Text string, as it may be eg. a portion of a stream that starts with a non-starter. Read more

fn read_exact_text_substr(&mut self, buf: &mut TextSubstr) -> Result<()>[src]

Like read_exact_str but for reading Basic Text content. As with read_text, the resulting string may not be a Basic Text string. Read more

fn read_to_text_string(&mut self, buf: &mut TextString) -> Result<usize>[src]

Like read_to_string, but reads into a TextString.

impl<Inner: HalfDuplexLayered + ReadStrLayered + WriteStr> ReadTextLayered for TextDuplexer<Inner>[src]

fn read_text_substr_with_status(
    &mut self,
    buf: &mut TextSubstr
) -> Result<(usize, Status)>
[src]

Like read_str_with_status but for reading Basic Text data. Note that the resulting data may not be a Basic Text string, as it may be eg. a portion of a stream that starts with a non-starter. Read more

fn read_exact_text_substr_using_status(
    &mut self,
    buf: &mut TextSubstr
) -> Result<Status>
[src]

Like read_exact_str_using_status but for reading Basic Text content. As with read_text, the resulting string may not be a Basic Text string. Read more

impl<Inner: HalfDuplexLayered + ReadStrLayered + WriteStr> Write for TextDuplexer<Inner>[src]

fn write(&mut self, buf: &[u8]) -> Result<usize>[src]

Write a buffer into this writer, returning how many bytes were written. Read more

fn flush(&mut self) -> Result<()>[src]

Flush this output stream, ensuring that all intermediately buffered contents reach their destination. Read more

fn is_write_vectored(&self) -> bool[src]

🔬 This is a nightly-only experimental API. (can_vector)

Determines if this Writer has an efficient write_vectored implementation. Read more

fn write_vectored(&mut self, bufs: &[IoSlice<'_>]) -> Result<usize>[src]

Like write, except that it writes from a slice of buffers. Read more

fn write_all_vectored(&mut self, bufs: &mut [IoSlice<'_>]) -> Result<()>[src]

🔬 This is a nightly-only experimental API. (write_all_vectored)

Attempts to write multiple buffers into this writer. Read more

fn write_all(&mut self, buf: &[u8]) -> Result<(), Error>1.0.0[src]

Attempts to write an entire buffer into this writer. Read more

fn write_fmt(&mut self, fmt: Arguments<'_>) -> Result<(), Error>1.0.0[src]

Writes a formatted string into this writer, returning any error encountered. Read more

fn by_ref(&mut self) -> &mut Self1.0.0[src]

Creates a “by reference” adaptor for this instance of Write. Read more

impl<Inner: HalfDuplexLayered + ReadStrLayered + WriteStr> WriteLayered for TextDuplexer<Inner>[src]

fn close(&mut self) -> Result<()>[src]

Flush any buffers and declare the end of the stream. Subsequent writes will fail. Read more

fn flush_with_status(&mut self, status: Status) -> Result<(), Error>[src]

Like Write::flush, but has a status parameter describing the future of the stream: Read more

impl<Inner: HalfDuplexLayered + ReadStrLayered + WriteStr> WriteStr for TextDuplexer<Inner>[src]

fn write_str(&mut self, s: &str) -> Result<()>[src]

Like Write::write_all, but takes a &str, allowing implementors which require valid UTF-8 to avoid re-validating the data. Read more

impl<Inner: HalfDuplexLayered + ReadStrLayered + WriteStr> WriteText for TextDuplexer<Inner>[src]

fn write_text_substr(&mut self, s: &TextSubstr) -> Result<()>[src]

Like WriteStr::write_str but writes from a TextSubstr.

fn write_text(&mut self, buf: &TextStr) -> Result<()>[src]

Like WriteStr::write_str but writes from a TextStr.

impl<Inner: HalfDuplexLayered + ReadStrLayered + WriteStr> Duplex for TextDuplexer<Inner>[src]

impl<Inner: HalfDuplexLayered + ReadStr + WriteStr + OwnsRaw> OwnsRaw for TextDuplexer<Inner>[src]

Auto Trait Implementations

impl<Inner> RefUnwindSafe for TextDuplexer<Inner> where
    Inner: RefUnwindSafe

impl<Inner> Send for TextDuplexer<Inner> where
    Inner: Send

impl<Inner> Sync for TextDuplexer<Inner> where
    Inner: Sync

impl<Inner> Unpin for TextDuplexer<Inner> where
    Inner: Unpin

impl<Inner> UnwindSafe for TextDuplexer<Inner> where
    Inner: UnwindSafe

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

pub fn type_id(&self) -> TypeId[src]

Gets the TypeId of self. Read more

impl<T> AsUnsafeFile for T where
    T: AsRawFd + OwnsRaw
[src]

pub fn as_unsafe_file(&self) -> UnsafeFile[src]

Return the contained unsafe file.

fn as_file_view(&self) -> View<'_, File>[src]

Utility for returning a value which dereferences to a &File or &mut File. Read more

unsafe fn as_unscoped_file_view(&self) -> View<'static, File>[src]

Like as_file_view, but returns a value which is not explicitly tied to the lifetime of self. Read more

fn as_pipe_reader_view(&self) -> View<'_, PipeReader>[src]

Utility for returning a value which dereferences to a &PipeReader or &mut PipeReader. Read more

unsafe fn as_unscoped_pipe_reader_view(&self) -> View<'static, PipeReader>[src]

Like as_pipe_reader_view, but returns a value which is not explicitly tied to the lifetime of self. Read more

fn as_pipe_writer_view(&self) -> View<'_, PipeWriter>[src]

Utility for returning a value which dereferences to a &PipeWriter or &mut PipeWriter. Read more

unsafe fn as_unscoped_pipe_writer_view(&self) -> View<'static, PipeWriter>[src]

Like as_pipe_writer_view, but returns a value which is not explicitly tied to the lifetime of self. Read more

fn eq_file<Filelike>(&self, other: &Filelike) -> bool where
    Filelike: AsUnsafeFile
[src]

Test whether self.as_unsafe_file().as_unsafe_handle() is equal to other.as_unsafe_file().as_unsafe_handle(). Read more

impl<T> AsUnsafeHandle for T where
    T: AsRawFd + OwnsRaw
[src]

pub fn as_unsafe_handle(&self) -> UnsafeHandle[src]

Return the contained unsafe handle.

fn eq_handle<Handlelike>(&self, other: &Handlelike) -> bool where
    Handlelike: AsUnsafeHandle
[src]

Test whether self.as_unsafe_handle() is equal to other.as_unsafe_handle(). Read more

impl<T> AsUnsafeSocket for T where
    T: AsRawFd + OwnsRaw
[src]

pub fn as_unsafe_socket(&self) -> UnsafeSocket[src]

Return the contained unsafe socket.

fn as_tcp_stream_view(&self) -> View<'_, TcpStream>[src]

Utility for returning a value which dereferences to a &TcpStream or &mut TcpStream. Read more

unsafe fn as_unscoped_tcp_stream_view(&self) -> View<'static, TcpStream>[src]

Like as_tcp_stream_view, but returns a value which is not explicitly tied to the lifetime of self. Read more

fn as_tcp_listener_view(&self) -> View<'_, TcpListener>[src]

Utility for returning a value which dereferences to a &TcpListener or &mut TcpListener. Read more

unsafe fn as_unscoped_tcp_listener_view(&self) -> View<'static, TcpListener>[src]

Like as_tcp_listener_view, but returns a value which is not explicitly tied to the lifetime of self. Read more

fn as_udp_socket_view(&self) -> View<'_, UdpSocket>[src]

Utility for returning a value which dereferences to a &UdpSocket or &mut UdpSocket. Read more

unsafe fn as_unscoped_udp_socket_view(&self) -> View<'static, UdpSocket>[src]

Like as_udp_socket_view, but returns a value which is not explicitly tied to the lifetime of self. Read more

fn as_unix_stream_view(&self) -> View<'_, UnixStream>[src]

Utility for returning a value which dereferences to a &UnixStream or &mut UnixStream. Read more

unsafe fn as_unscoped_unix_stream_view(&self) -> View<'static, UnixStream>[src]

Like as_unix_stream_view, but returns a value which is not explicitly tied to the lifetime of self. Read more

fn eq_socket<Socketlike>(&self, other: &Socketlike) -> bool where
    Socketlike: AsUnsafeSocket
[src]

Test whether self.as_unsafe_socket().as_unsafe_handle() is equal to other.as_unsafe_socket().as_unsafe_handle(). Read more

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

pub fn borrow(&self) -> &T[src]

Immutably borrows from an owned value. Read more

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

pub fn borrow_mut(&mut self) -> &mut T[src]

Mutably borrows from an owned value. Read more

impl<T> From<T> for T[src]

pub fn from(t: T) -> T[src]

Performs the conversion.

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

pub fn into(self) -> U[src]

Performs the conversion.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

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]

Performs the conversion.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

pub fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>[src]

Performs the conversion.

impl<T> HalfDuplex for T where
    T: Duplex + Read + Write
[src]

impl<T> HalfDuplexLayered for T where
    T: Duplex + ReadLayered + WriteLayered
[src]