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§
source§impl<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.
source§impl<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§
source§impl<Inner: HalfDuplexLayered + ReadStr + WriteStr + AsFd> AsFd for TextDuplexer<Inner>
impl<Inner: HalfDuplexLayered + ReadStr + WriteStr + AsFd> AsFd for TextDuplexer<Inner>
source§fn as_fd(&self) -> BorrowedFd<'_>
fn as_fd(&self) -> BorrowedFd<'_>
source§impl<Inner: HalfDuplexLayered + ReadStr + WriteStr + AsRawFd> AsRawFd for TextDuplexer<Inner>
impl<Inner: HalfDuplexLayered + ReadStr + WriteStr + AsRawFd> AsRawFd for TextDuplexer<Inner>
source§impl<Inner: HalfDuplexLayered + ReadStrLayered + WriteStr> Bufferable for TextDuplexer<Inner>
impl<Inner: HalfDuplexLayered + ReadStrLayered + WriteStr> Bufferable for TextDuplexer<Inner>
source§impl<Inner: HalfDuplexLayered + ReadStr + WriteStr + Debug> Debug for TextDuplexer<Inner>
impl<Inner: HalfDuplexLayered + ReadStr + WriteStr + Debug> Debug for TextDuplexer<Inner>
source§impl<Inner: HalfDuplexLayered + ReadStrLayered + WriteStr> Read for TextDuplexer<Inner>
impl<Inner: HalfDuplexLayered + ReadStrLayered + WriteStr> Read for TextDuplexer<Inner>
source§fn read(&mut self, buf: &mut [u8]) -> Result<usize>
fn read(&mut self, buf: &mut [u8]) -> Result<usize>
source§fn read_to_end(&mut self, buf: &mut Vec<u8>) -> Result<usize>
fn read_to_end(&mut self, buf: &mut Vec<u8>) -> Result<usize>
buf
. Read moresource§fn read_to_string(&mut self, buf: &mut String) -> Result<usize>
fn read_to_string(&mut self, buf: &mut String) -> Result<usize>
buf
. Read more1.36.0 · source§fn read_vectored(&mut self, bufs: &mut [IoSliceMut<'_>]) -> Result<usize, Error>
fn read_vectored(&mut self, bufs: &mut [IoSliceMut<'_>]) -> Result<usize, Error>
read
, except that it reads into a slice of buffers. Read moresource§fn is_read_vectored(&self) -> bool
fn is_read_vectored(&self) -> bool
can_vector
)1.6.0 · source§fn read_exact(&mut self, buf: &mut [u8]) -> Result<(), Error>
fn read_exact(&mut self, buf: &mut [u8]) -> Result<(), Error>
buf
. Read moresource§fn read_buf(&mut self, buf: BorrowedCursor<'_>) -> Result<(), Error>
fn read_buf(&mut self, buf: BorrowedCursor<'_>) -> Result<(), Error>
read_buf
)source§fn read_buf_exact(&mut self, cursor: BorrowedCursor<'_>) -> Result<(), Error>
fn read_buf_exact(&mut self, cursor: BorrowedCursor<'_>) -> Result<(), Error>
read_buf
)cursor
. Read more1.0.0 · source§fn by_ref(&mut self) -> &mut Selfwhere
Self: Sized,
fn by_ref(&mut self) -> &mut Selfwhere
Self: Sized,
Read
. Read moresource§impl<Inner: HalfDuplexLayered + ReadStrLayered + WriteStr> ReadLayered for TextDuplexer<Inner>
impl<Inner: HalfDuplexLayered + ReadStrLayered + WriteStr> ReadLayered for TextDuplexer<Inner>
source§fn read_with_status(&mut self, buf: &mut [u8]) -> Result<(usize, Status)>
fn read_with_status(&mut self, buf: &mut [u8]) -> Result<(usize, Status)>
Read::read
, but also returns a Status
.source§fn minimum_buffer_size(&self) -> usize
fn minimum_buffer_size(&self) -> usize
source§fn 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>
Read::read_vectored
, but also returns a Status
.source§impl<Inner: HalfDuplexLayered + ReadStrLayered + WriteStr> ReadStr for TextDuplexer<Inner>
impl<Inner: HalfDuplexLayered + ReadStrLayered + WriteStr> ReadStr for TextDuplexer<Inner>
source§impl<Inner: HalfDuplexLayered + ReadStrLayered + WriteStr> ReadStrLayered for TextDuplexer<Inner>
impl<Inner: HalfDuplexLayered + ReadStrLayered + WriteStr> ReadStrLayered for TextDuplexer<Inner>
source§impl<Inner: HalfDuplexLayered + ReadStrLayered + WriteStr> ReadText for TextDuplexer<Inner>
impl<Inner: HalfDuplexLayered + ReadStrLayered + WriteStr> ReadText for TextDuplexer<Inner>
source§fn read_text_substr(&mut self, buf: &mut TextSubstr) -> Result<usize>
fn read_text_substr(&mut self, buf: &mut TextSubstr) -> Result<usize>
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.source§fn read_exact_text_substr(&mut self, buf: &mut TextSubstr) -> Result<()>
fn read_exact_text_substr(&mut self, buf: &mut TextSubstr) -> Result<()>
read_exact_str
but for reading Basic Text content. As with
read_text
, the resulting string may not be a Basic Text string.source§fn read_to_text_string(&mut self, buf: &mut TextString) -> Result<usize>
fn read_to_text_string(&mut self, buf: &mut TextString) -> Result<usize>
read_to_string
, but reads into a TextString
.source§impl<Inner: HalfDuplexLayered + ReadStrLayered + WriteStr> ReadTextLayered for TextDuplexer<Inner>
impl<Inner: HalfDuplexLayered + ReadStrLayered + WriteStr> ReadTextLayered for TextDuplexer<Inner>
source§fn 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)>
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 moresource§fn 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>
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 moresource§impl<Inner: HalfDuplexLayered + ReadStrLayered + WriteStr> Write for TextDuplexer<Inner>
impl<Inner: HalfDuplexLayered + ReadStrLayered + WriteStr> Write for TextDuplexer<Inner>
source§fn write(&mut self, buf: &[u8]) -> Result<usize>
fn write(&mut self, buf: &[u8]) -> Result<usize>
source§fn flush(&mut self) -> Result<()>
fn flush(&mut self) -> Result<()>
source§fn is_write_vectored(&self) -> bool
fn is_write_vectored(&self) -> bool
can_vector
)source§fn write_all_vectored(&mut self, bufs: &mut [IoSlice<'_>]) -> Result<()>
fn write_all_vectored(&mut self, bufs: &mut [IoSlice<'_>]) -> Result<()>
write_all_vectored
)1.0.0 · source§fn write_all(&mut self, buf: &[u8]) -> Result<(), Error>
fn write_all(&mut self, buf: &[u8]) -> Result<(), Error>
source§impl<Inner: HalfDuplexLayered + ReadStrLayered + WriteStr> WriteLayered for TextDuplexer<Inner>
impl<Inner: HalfDuplexLayered + ReadStrLayered + WriteStr> WriteLayered for TextDuplexer<Inner>
source§impl<Inner: HalfDuplexLayered + ReadStrLayered + WriteStr> WriteStr for TextDuplexer<Inner>
impl<Inner: HalfDuplexLayered + ReadStrLayered + WriteStr> WriteStr for TextDuplexer<Inner>
source§impl<Inner: HalfDuplexLayered + ReadStrLayered + WriteStr> WriteText for TextDuplexer<Inner>
impl<Inner: HalfDuplexLayered + ReadStrLayered + WriteStr> WriteText for TextDuplexer<Inner>
source§fn write_text_substr(&mut self, s: &TextSubstr) -> Result<()>
fn write_text_substr(&mut self, s: &TextSubstr) -> Result<()>
WriteStr::write_str
but writes from a TextSubstr
.impl<Inner: HalfDuplexLayered + ReadStrLayered + WriteStr> Duplex for TextDuplexer<Inner>
Auto Trait Implementations§
impl<Inner> Freeze for TextDuplexer<Inner>where
Inner: Freeze,
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§
source§impl<T> AsFilelike for Twhere
T: AsFd,
impl<T> AsFilelike for Twhere
T: AsFd,
source§fn as_filelike(&self) -> BorrowedFd<'_>
fn as_filelike(&self) -> BorrowedFd<'_>
source§fn as_filelike_view<Target>(&self) -> FilelikeView<'_, Target>where
Target: FilelikeViewType,
fn as_filelike_view<Target>(&self) -> FilelikeView<'_, Target>where
Target: FilelikeViewType,
&Target
. Read moresource§impl<T> AsGrip for Twhere
T: AsFd,
impl<T> AsGrip for Twhere
T: AsFd,
source§fn as_grip(&self) -> BorrowedFd<'_>
fn as_grip(&self) -> BorrowedFd<'_>
source§impl<T> AsRawFilelike for Twhere
T: AsRawFd,
impl<T> AsRawFilelike for Twhere
T: AsRawFd,
source§fn as_raw_filelike(&self) -> i32
fn as_raw_filelike(&self) -> i32
source§impl<T> AsRawGrip for Twhere
T: AsRawFd,
impl<T> AsRawGrip for Twhere
T: AsRawFd,
source§fn as_raw_grip(&self) -> i32
fn as_raw_grip(&self) -> i32
source§impl<T> AsRawSocketlike for Twhere
T: AsRawFd,
impl<T> AsRawSocketlike for Twhere
T: AsRawFd,
source§fn as_raw_socketlike(&self) -> i32
fn as_raw_socketlike(&self) -> i32
source§impl<T> AsSocketlike for Twhere
T: AsFd,
impl<T> AsSocketlike for Twhere
T: AsFd,
source§fn as_socketlike(&self) -> BorrowedFd<'_>
fn as_socketlike(&self) -> BorrowedFd<'_>
source§fn as_socketlike_view<Target>(&self) -> SocketlikeView<'_, Target>where
Target: SocketlikeViewType,
fn as_socketlike_view<Target>(&self) -> SocketlikeView<'_, Target>where
Target: SocketlikeViewType,
&Target
. Read more