Struct compio_io::BufWriter

source ·
pub struct BufWriter<W> { /* private fields */ }
Expand description

Wraps a writer and buffers its output.

It can be excessively inefficient to work directly with something that implements AsyncWrite. A BufWriter<W> keeps an in-memory buffer of data and writes it to an underlying writer in large, infrequent batches. BufWriter<W> can improve the speed of programs that make small and repeated write calls to the same file or network socket. It does not help when writing very large amounts at once, or writing just one or a few times. It also provides no advantage when writing to a destination that is in memory, like a Vec<u8>.

Dropping BufWriter<W> also discards any bytes left in the buffer, so it is critical to call flush before BufWriter<W> is dropped. Calling flush ensures that the buffer is empty and thus no data is lost.

Implementations§

source§

impl<W> BufWriter<W>

source

pub fn new(writer: W) -> Self

Creates a new BufWriter with a default buffer capacity. The default is currently 8 KB, but may change in the future.

source

pub fn with_capacity(cap: usize, writer: W) -> Self

Creates a new BufWriter with the specified buffer capacity.

Trait Implementations§

source§

impl<W: AsyncWrite> AsyncWrite for BufWriter<W>

source§

async fn write<T: IoBuf>(&mut self, buf: T) -> BufResult<usize, T>

Write some bytes from the buffer into this source and return a BufResult, consisting of the buffer and a usize indicating how many bytes were written.
source§

async fn write_vectored<T: IoVectoredBuf>( &mut self, buf: T, ) -> BufResult<usize, T>

Like write, except that it write bytes from a buffer implements IoVectoredBuf into the source. Read more
source§

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

Attempts to flush the object, ensuring that any buffered data reach their destination.
source§

async fn shutdown(&mut self) -> Result<()>

Initiates or attempts to shut down this writer, returning success when the I/O connection has completely shut down.
source§

impl<W: Debug> Debug for BufWriter<W>

source§

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

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

impl<W> IntoInner for BufWriter<W>

source§

type Inner = W

The inner type.
source§

fn into_inner(self) -> Self::Inner

Get the inner buffer.

Auto Trait Implementations§

§

impl<W> Freeze for BufWriter<W>
where W: Freeze,

§

impl<W> RefUnwindSafe for BufWriter<W>
where W: RefUnwindSafe,

§

impl<W> Send for BufWriter<W>
where W: Send,

§

impl<W> Sync for BufWriter<W>
where W: Sync,

§

impl<W> Unpin for BufWriter<W>
where W: Unpin,

§

impl<W> UnwindSafe for BufWriter<W>
where W: 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<A> AsyncWriteExt for A
where A: AsyncWrite + ?Sized,

source§

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

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

async fn write_all<T: IoBuf>(&mut self, buf: T) -> BufResult<(), T>

Write the entire contents of a buffer into this writer.
source§

async fn write_vectored_all<T: IoVectoredBuf>( &mut self, buf: T, ) -> BufResult<(), T>

Write the entire contents of a buffer into this writer. Like AsyncWrite::write_vectored, except that it tries to write the entire contents of the buffer into this writer.
source§

async fn write_u8(&mut self, num: u8) -> Result<()>

Write a big endian u8 into the underlying writer.
source§

async fn write_u8_le(&mut self, num: u8) -> Result<()>

Write a little endian u8 into the underlying writer.
source§

async fn write_u16(&mut self, num: u16) -> Result<()>

Write a big endian u16 into the underlying writer.
source§

async fn write_u16_le(&mut self, num: u16) -> Result<()>

Write a little endian u16 into the underlying writer.
source§

async fn write_u32(&mut self, num: u32) -> Result<()>

Write a big endian u32 into the underlying writer.
source§

async fn write_u32_le(&mut self, num: u32) -> Result<()>

Write a little endian u32 into the underlying writer.
source§

async fn write_u64(&mut self, num: u64) -> Result<()>

Write a big endian u64 into the underlying writer.
source§

async fn write_u64_le(&mut self, num: u64) -> Result<()>

Write a little endian u64 into the underlying writer.
source§

async fn write_u128(&mut self, num: u128) -> Result<()>

Write a big endian u128 into the underlying writer.
source§

async fn write_u128_le(&mut self, num: u128) -> Result<()>

Write a little endian u128 into the underlying writer.
source§

async fn write_i8(&mut self, num: i8) -> Result<()>

Write a big endian i8 into the underlying writer.
source§

async fn write_i8_le(&mut self, num: i8) -> Result<()>

Write a little endian i8 into the underlying writer.
source§

async fn write_i16(&mut self, num: i16) -> Result<()>

Write a big endian i16 into the underlying writer.
source§

async fn write_i16_le(&mut self, num: i16) -> Result<()>

Write a little endian i16 into the underlying writer.
source§

async fn write_i32(&mut self, num: i32) -> Result<()>

Write a big endian i32 into the underlying writer.
source§

async fn write_i32_le(&mut self, num: i32) -> Result<()>

Write a little endian i32 into the underlying writer.
source§

async fn write_i64(&mut self, num: i64) -> Result<()>

Write a big endian i64 into the underlying writer.
source§

async fn write_i64_le(&mut self, num: i64) -> Result<()>

Write a little endian i64 into the underlying writer.
source§

async fn write_i128(&mut self, num: i128) -> Result<()>

Write a big endian i128 into the underlying writer.
source§

async fn write_i128_le(&mut self, num: i128) -> Result<()>

Write a little endian i128 into the underlying writer.
source§

async fn write_f32(&mut self, num: f32) -> Result<()>

Write a big endian f32 into the underlying writer.
source§

async fn write_f32_le(&mut self, num: f32) -> Result<()>

Write a little endian f32 into the underlying writer.
source§

async fn write_f64(&mut self, num: f64) -> Result<()>

Write a big endian f64 into the underlying writer.
source§

async fn write_f64_le(&mut self, num: f64) -> Result<()>

Write a little endian f64 into the underlying writer.
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>,

source§

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>,

source§

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.