Struct basic_text::TextWriter

source ·
pub struct TextWriter<Inner> { /* private fields */ }
Expand description

A WriteLayered implementation which translates to an output WriteLayered producing a valid Basic Text stream from an arbitrary byte sequence.

write is not guaranteed to perform a single operation, because short writes could produce invalid UTF-8, so write will retry as needed.

§Examples

use basic_text::TextWriter;
use layered_io::WriteLayered;

let mut output = TextWriter::new(std::io::stdout());

// write to `output`

output.close().unwrap();

Implementations§

source§

impl<Inner: Write> TextWriter<Utf8Writer<LayeredWriter<Inner>>>

source

pub fn new(inner: Inner) -> Self

Construct a new instance of TextWriter wrapping inner, which can be anything that implements Write.

source

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.

source

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.

source§

impl<Inner: WriteStr + WriteLayered> TextWriter<Inner>

source

pub fn from_utf8(inner: Inner) -> Self

Construct a new instance of TextWriter wrapping inner, which can be anything that implements WriteStr + WriteLayered, such as a Utf8Writer.

source

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.

source

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.

source

pub fn close_into_inner(self) -> Result<Inner>

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

source

pub fn abandon_into_inner(self) -> Inner

Return the underlying stream object.

Trait Implementations§

source§

impl<Inner: WriteStr + WriteLayered + AsFd> AsFd for TextWriter<Inner>

source§

fn as_fd(&self) -> BorrowedFd<'_>

Borrows the file descriptor. Read more
source§

impl<Inner: WriteStr + WriteLayered + AsRawFd> AsRawFd for TextWriter<Inner>

source§

fn as_raw_fd(&self) -> RawFd

Extracts the raw file descriptor. Read more
source§

impl<Inner: WriteStr + WriteLayered> Bufferable for TextWriter<Inner>

source§

fn abandon(&mut self)

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

fn suggested_buffer_size(&self) -> usize

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

impl<Inner: Debug> Debug for TextWriter<Inner>

source§

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

Formats the value using the given formatter. Read more
source§

impl<Inner: WriteStr + WriteLayered> Write for TextWriter<Inner>

source§

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

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

fn flush(&mut self) -> Result<()>

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

fn is_write_vectored(&self) -> bool

🔬This is a nightly-only experimental API. (can_vector)
Determines if this Writer has an efficient write_vectored implementation. Read more
source§

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

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

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

🔬This is a nightly-only experimental API. (write_all_vectored)
Attempts to write multiple buffers into this writer. Read more
1.0.0 · source§

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

Attempts to write an entire buffer into this writer. Read more
1.0.0 · source§

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

Writes a formatted string into this writer, returning any error encountered. Read more
1.0.0 · source§

fn by_ref(&mut self) -> &mut Self
where Self: Sized,

Creates a “by reference” adapter for this instance of Write. Read more
source§

impl<Inner: WriteStr + WriteLayered> WriteLayered for TextWriter<Inner>

source§

fn close(&mut self) -> Result<()>

Flush any buffers and declare the end of the stream. Subsequent writes will fail.
source§

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

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

impl<Inner: WriteStr + WriteLayered> WriteStr for TextWriter<Inner>

source§

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

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

impl<Inner: WriteStr + WriteLayered> WriteText for TextWriter<Inner>

source§

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

Like WriteStr::write_str but writes from a TextSubstr.
source§

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

Like WriteStr::write_str but writes from a TextStr.

Auto Trait Implementations§

§

impl<Inner> Freeze for TextWriter<Inner>
where Inner: Freeze,

§

impl<Inner> RefUnwindSafe for TextWriter<Inner>
where Inner: RefUnwindSafe,

§

impl<Inner> Send for TextWriter<Inner>
where Inner: Send,

§

impl<Inner> Sync for TextWriter<Inner>
where Inner: Sync,

§

impl<Inner> Unpin for TextWriter<Inner>
where Inner: Unpin,

§

impl<Inner> UnwindSafe for TextWriter<Inner>
where Inner: UnwindSafe,

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> AsFilelike for T
where T: AsFd,

source§

fn as_filelike(&self) -> BorrowedFd<'_>

Borrows the reference. Read more
source§

fn as_filelike_view<Target>(&self) -> FilelikeView<'_, Target>
where Target: FilelikeViewType,

Return a borrowing view of a resource which dereferences to a &Target. Read more
source§

impl<T> AsGrip for T
where T: AsFd,

source§

fn as_grip(&self) -> BorrowedFd<'_>

Extracts the grip.
source§

impl<T> AsRawFilelike for T
where T: AsRawFd,

source§

fn as_raw_filelike(&self) -> i32

Returns the raw value.
source§

impl<T> AsRawGrip for T
where T: AsRawFd,

source§

fn as_raw_grip(&self) -> i32

Extracts the raw grip.
source§

impl<T> AsRawSocketlike for T
where T: AsRawFd,

source§

fn as_raw_socketlike(&self) -> i32

Returns the raw value.
source§

impl<T> AsSocketlike for T
where T: AsFd,

source§

fn as_socketlike(&self) -> BorrowedFd<'_>

Borrows the reference.
source§

fn as_socketlike_view<Target>(&self) -> SocketlikeView<'_, Target>
where Target: SocketlikeViewType,

Return a borrowing view of a resource which dereferences to a &Target. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

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

The type returned in the event of a conversion error.
source§

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

Performs the conversion.