Struct basic_text::TextDuplexer
source · [−]pub struct TextDuplexer<Inner: HalfDuplex + ReadStr + WriteStr> { /* private fields */ }Expand description
A HalfDuplex implementation which translates from an input HalfDuplex
implementation producing an arbitrary byte sequence into a valid Basic Text
stream.
Implementations
sourceimpl<Inner: HalfDuplex> TextDuplexer<Utf8Duplexer<LayeredDuplexer<Inner>>>
impl<Inner: HalfDuplex> TextDuplexer<Utf8Duplexer<LayeredDuplexer<Inner>>>
sourcepub fn new(inner: Inner) -> Self
pub fn new(inner: Inner) -> Self
Construct a new instance of TextDuplexer wrapping inner, which can
be anything that implements HalfDuplex.
sourcepub fn with_bom_compatibility(inner: Inner) -> Result<Self>
pub fn with_bom_compatibility(inner: Inner) -> Result<Self>
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.
sourcepub fn with_crlf_compatibility(inner: Inner) -> Self
pub fn with_crlf_compatibility(inner: Inner) -> Self
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.
sourcepub fn with_nel_compatibility(inner: Inner) -> Result<Self>
pub fn with_nel_compatibility(inner: Inner) -> Result<Self>
Like new, but replaces U+85 (NEL) with U+A instead of U+20.
sourcepub fn with_lsps_compatibility(inner: Inner) -> Result<Self>
pub fn with_lsps_compatibility(inner: Inner) -> Result<Self>
Like new, but replaces U+2028 (LS) and U+2029 (PS) with U+A instead
of U+20.
sourceimpl<Inner: HalfDuplex + ReadStr + ReadLayered + ReadStrLayered + WriteStr + WriteLayered> TextDuplexer<Inner>
impl<Inner: HalfDuplex + ReadStr + ReadLayered + ReadStrLayered + WriteStr + WriteLayered> TextDuplexer<Inner>
sourcepub fn from_utf8(inner: Inner) -> Self
pub fn from_utf8(inner: Inner) -> Self
Construct a new instance of TextDuplexer wrapping inner.
sourcepub fn from_utf8_with_bom_compatibility(inner: Inner) -> Result<Self>
pub fn from_utf8_with_bom_compatibility(inner: Inner) -> Result<Self>
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.
sourcepub fn from_utf8_with_crlf_compatibility(inner: Inner) -> Self
pub fn from_utf8_with_crlf_compatibility(inner: Inner) -> Self
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.
sourcepub fn from_utf8_with_nel_compatibility(inner: Inner) -> Result<Self>
pub fn from_utf8_with_nel_compatibility(inner: Inner) -> Result<Self>
Like from_utf8, but replaces U+85 (NEL) with U+A instead of U+20.
sourcepub fn from_utf8_with_lsps_compatibility(inner: Inner) -> Result<Self>
pub fn from_utf8_with_lsps_compatibility(inner: Inner) -> Result<Self>
Like from_utf8, but replaces U+2028 (LS) and U+2029 (PS) with U+A
instead of U+20.
sourcepub fn close_into_inner(self) -> Result<Inner>
pub fn close_into_inner(self) -> Result<Inner>
Flush and close the underlying stream and return the underlying stream object.
sourcepub fn abandon_into_inner(self) -> Inner
pub fn abandon_into_inner(self) -> Inner
Return the underlying stream object.
Trait Implementations
sourceimpl<Inner: HalfDuplexLayered + ReadStr + WriteStr + AsHandleOrSocket> AsHandleOrSocket for TextDuplexer<Inner>
impl<Inner: HalfDuplexLayered + ReadStr + WriteStr + AsHandleOrSocket> AsHandleOrSocket for TextDuplexer<Inner>
sourcefn as_handle_or_socket(&self) -> BorrowedHandleOrSocket<'_>
fn as_handle_or_socket(&self) -> BorrowedHandleOrSocket<'_>
Like AsHandle::as_handle and AsSocket::as_socket
but can return either type. Read more
sourceimpl<Inner: HalfDuplexLayered + ReadStr + WriteStr + AsRawHandleOrSocket> AsRawHandleOrSocket for TextDuplexer<Inner>
impl<Inner: HalfDuplexLayered + ReadStr + WriteStr + AsRawHandleOrSocket> AsRawHandleOrSocket for TextDuplexer<Inner>
sourcefn as_raw_handle_or_socket(&self) -> RawHandleOrSocket
fn as_raw_handle_or_socket(&self) -> RawHandleOrSocket
Like AsRawHandle::as_raw_handle and AsRawSocket::as_raw_socket
but can return either type. Read more
sourceimpl<Inner: HalfDuplexLayered + ReadStrLayered + WriteStr> Bufferable for TextDuplexer<Inner>
impl<Inner: HalfDuplexLayered + ReadStrLayered + WriteStr> Bufferable for TextDuplexer<Inner>
sourcefn suggested_buffer_size(&self) -> usize
fn suggested_buffer_size(&self) -> usize
A suggested size, in bytes, for buffering for performance.
sourceimpl<Inner: HalfDuplexLayered + ReadStr + WriteStr + Debug> Debug for TextDuplexer<Inner>
impl<Inner: HalfDuplexLayered + ReadStr + WriteStr + Debug> Debug for TextDuplexer<Inner>
sourceimpl<Inner: HalfDuplexLayered + ReadStrLayered + WriteStr> Read for TextDuplexer<Inner>
impl<Inner: HalfDuplexLayered + ReadStrLayered + WriteStr> Read for TextDuplexer<Inner>
sourcefn read(&mut self, buf: &mut [u8]) -> Result<usize>
fn read(&mut self, buf: &mut [u8]) -> Result<usize>
Pull some bytes from this source into the specified buffer, returning how many bytes were read. Read more
sourcefn read_to_end(&mut self, buf: &mut Vec<u8>) -> Result<usize>
fn read_to_end(&mut self, buf: &mut Vec<u8>) -> Result<usize>
Read all bytes until EOF in this source, placing them into buf. Read more
sourcefn read_to_string(&mut self, buf: &mut String) -> Result<usize>
fn read_to_string(&mut self, buf: &mut String) -> Result<usize>
Read all bytes until EOF in this source, appending them to buf. Read more
1.36.0 · sourcefn read_vectored(&mut self, bufs: &mut [IoSliceMut<'_>]) -> Result<usize, Error>
fn read_vectored(&mut self, bufs: &mut [IoSliceMut<'_>]) -> Result<usize, Error>
Like read, except that it reads into a slice of buffers. Read more
sourcefn is_read_vectored(&self) -> bool
fn is_read_vectored(&self) -> bool
can_vector)Determines if this Reader has an efficient read_vectored
implementation. Read more
1.6.0 · sourcefn read_exact(&mut self, buf: &mut [u8]) -> Result<(), Error>
fn read_exact(&mut self, buf: &mut [u8]) -> Result<(), Error>
Read the exact number of bytes required to fill buf. Read more
sourcefn read_buf(&mut self, buf: &mut ReadBuf<'_>) -> Result<(), Error>
fn read_buf(&mut self, buf: &mut ReadBuf<'_>) -> Result<(), Error>
read_buf)Pull some bytes from this source into the specified buffer. Read more
sourcefn read_buf_exact(&mut self, buf: &mut ReadBuf<'_>) -> Result<(), Error>
fn read_buf_exact(&mut self, buf: &mut ReadBuf<'_>) -> Result<(), Error>
read_buf)Read the exact number of bytes required to fill buf. Read more
1.0.0 · sourcefn by_ref(&mut self) -> &mut Self
fn by_ref(&mut self) -> &mut Self
Creates a “by reference” adaptor for this instance of Read. Read more
sourceimpl<Inner: HalfDuplexLayered + ReadStrLayered + WriteStr> ReadLayered for TextDuplexer<Inner>
impl<Inner: HalfDuplexLayered + ReadStrLayered + WriteStr> ReadLayered for TextDuplexer<Inner>
sourcefn read_with_status(&mut self, buf: &mut [u8]) -> Result<(usize, Status)>
fn read_with_status(&mut self, buf: &mut [u8]) -> Result<(usize, Status)>
Like Read::read, but also returns a Status.
sourcefn minimum_buffer_size(&self) -> usize
fn minimum_buffer_size(&self) -> usize
Some streams require a buffer of at least a certain size.
sourcefn read_vectored_with_status(
&mut self,
bufs: &mut [IoSliceMut<'_>]
) -> Result<(usize, Status), Error>
fn read_vectored_with_status(
&mut self,
bufs: &mut [IoSliceMut<'_>]
) -> Result<(usize, Status), Error>
Like Read::read_vectored, but also returns a Status.
sourceimpl<Inner: HalfDuplexLayered + ReadStrLayered + WriteStr> ReadStr for TextDuplexer<Inner>
impl<Inner: HalfDuplexLayered + ReadStrLayered + WriteStr> ReadStr for TextDuplexer<Inner>
sourcefn read_str(&mut self, buf: &mut str) -> Result<usize>
fn read_str(&mut self, buf: &mut str) -> Result<usize>
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
sourcefn read_exact_str(&mut self, buf: &mut str) -> Result<()>
fn read_exact_str(&mut self, buf: &mut str) -> Result<()>
Like read_exact but produces the result in a str.
sourceimpl<Inner: HalfDuplexLayered + ReadStrLayered + WriteStr> ReadStrLayered for TextDuplexer<Inner>
impl<Inner: HalfDuplexLayered + ReadStrLayered + WriteStr> ReadStrLayered for TextDuplexer<Inner>
sourceimpl<Inner: HalfDuplexLayered + ReadStrLayered + WriteStr> ReadText for TextDuplexer<Inner>
impl<Inner: HalfDuplexLayered + ReadStrLayered + WriteStr> ReadText for TextDuplexer<Inner>
sourcefn read_text_substr(&mut self, buf: &mut TextSubstr) -> Result<usize>
fn read_text_substr(&mut self, buf: &mut TextSubstr) -> Result<usize>
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
sourcefn read_exact_text_substr(&mut self, buf: &mut TextSubstr) -> Result<()>
fn read_exact_text_substr(&mut self, buf: &mut TextSubstr) -> Result<()>
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
sourcefn read_to_text_string(&mut self, buf: &mut TextString) -> Result<usize>
fn read_to_text_string(&mut self, buf: &mut TextString) -> Result<usize>
Like read_to_string, but reads into a TextString.
sourceimpl<Inner: HalfDuplexLayered + ReadStrLayered + WriteStr> ReadTextLayered for TextDuplexer<Inner>
impl<Inner: HalfDuplexLayered + ReadStrLayered + WriteStr> ReadTextLayered for TextDuplexer<Inner>
sourcefn read_text_substr_with_status(
&mut self,
buf: &mut TextSubstr
) -> Result<(usize, Status)>
fn read_text_substr_with_status(
&mut self,
buf: &mut TextSubstr
) -> Result<(usize, Status)>
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
sourcefn read_exact_text_substr_using_status(
&mut self,
buf: &mut TextSubstr
) -> Result<Status>
fn read_exact_text_substr_using_status(
&mut self,
buf: &mut TextSubstr
) -> Result<Status>
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
sourceimpl<Inner: HalfDuplexLayered + ReadStrLayered + WriteStr> Write for TextDuplexer<Inner>
impl<Inner: HalfDuplexLayered + ReadStrLayered + WriteStr> Write for TextDuplexer<Inner>
sourcefn write(&mut self, buf: &[u8]) -> Result<usize>
fn write(&mut self, buf: &[u8]) -> Result<usize>
Write a buffer into this writer, returning how many bytes were written. Read more
sourcefn flush(&mut self) -> Result<()>
fn flush(&mut self) -> Result<()>
Flush this output stream, ensuring that all intermediately buffered contents reach their destination. Read more
sourcefn is_write_vectored(&self) -> bool
fn is_write_vectored(&self) -> bool
can_vector)Determines if this Writer has an efficient write_vectored
implementation. Read more
sourcefn write_vectored(&mut self, bufs: &[IoSlice<'_>]) -> Result<usize>
fn write_vectored(&mut self, bufs: &[IoSlice<'_>]) -> Result<usize>
sourcefn write_all_vectored(&mut self, bufs: &mut [IoSlice<'_>]) -> Result<()>
fn write_all_vectored(&mut self, bufs: &mut [IoSlice<'_>]) -> Result<()>
write_all_vectored)Attempts to write multiple buffers into this writer. Read more
1.0.0 · sourcefn write_all(&mut self, buf: &[u8]) -> Result<(), Error>
fn write_all(&mut self, buf: &[u8]) -> Result<(), Error>
Attempts to write an entire buffer into this writer. Read more
sourceimpl<Inner: HalfDuplexLayered + ReadStrLayered + WriteStr> WriteLayered for TextDuplexer<Inner>
impl<Inner: HalfDuplexLayered + ReadStrLayered + WriteStr> WriteLayered for TextDuplexer<Inner>
sourceimpl<Inner: HalfDuplexLayered + ReadStrLayered + WriteStr> WriteStr for TextDuplexer<Inner>
impl<Inner: HalfDuplexLayered + ReadStrLayered + WriteStr> WriteStr for TextDuplexer<Inner>
sourceimpl<Inner: HalfDuplexLayered + ReadStrLayered + WriteStr> WriteText for TextDuplexer<Inner>
impl<Inner: HalfDuplexLayered + ReadStrLayered + WriteStr> WriteText for TextDuplexer<Inner>
sourcefn write_text_substr(&mut self, s: &TextSubstr) -> Result<()>
fn write_text_substr(&mut self, s: &TextSubstr) -> Result<()>
Like WriteStr::write_str but writes from a TextSubstr.
sourcefn write_text(&mut self, buf: &TextStr) -> Result<()>
fn write_text(&mut self, buf: &TextStr) -> Result<()>
Like WriteStr::write_str but writes from a TextStr.
impl<Inner: HalfDuplexLayered + ReadStrLayered + WriteStr> Duplex for TextDuplexer<Inner>
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
sourceimpl<T> AsGrip for T where
T: AsHandleOrSocket,
impl<T> AsGrip for T where
T: AsHandleOrSocket,
sourcefn as_grip(&self) -> BorrowedHandleOrSocket<'_>
fn as_grip(&self) -> BorrowedHandleOrSocket<'_>
Extracts the grip.
sourceimpl<T> AsRawGrip for T where
T: AsRawHandleOrSocket,
impl<T> AsRawGrip for T where
T: AsRawHandleOrSocket,
sourcefn as_raw_grip(&self) -> RawHandleOrSocket
fn as_raw_grip(&self) -> RawHandleOrSocket
Extracts the raw grip.
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more