pub struct BufWriter<W> { /* private fields */ }Expand description
Async buffered writer.
Wraps an AsyncWrite and provides buffering for more efficient writes.
Uses an internal buffer to reduce the number of underlying write calls.
§Example
ⓘ
use asupersync::io::BufWriter;
let writer = Vec::new();
let mut buf_writer = BufWriter::new(writer);
// Write to the buffered writer
// Data is batched and written when buffer fills or flush is called§Flushing
Data is not written to the underlying writer until:
- The internal buffer is full
flush()is calledshutdown()is called- A write exceeds the buffer capacity
Always ensure you flush or shutdown the writer to avoid data loss.
Implementations§
Source§impl<W> BufWriter<W>
impl<W> BufWriter<W>
Sourcepub fn new(inner: W) -> Self
pub fn new(inner: W) -> Self
Creates a new BufWriter with the default buffer capacity (8192 bytes).
Sourcepub fn with_capacity(capacity: usize, inner: W) -> Self
pub fn with_capacity(capacity: usize, inner: W) -> Self
Creates a new BufWriter with the specified buffer capacity.
Sourcepub fn get_mut(&mut self) -> &mut W
pub fn get_mut(&mut self) -> &mut W
Returns a mutable reference to the underlying writer.
Note: Writing directly to the inner writer may cause data ordering issues if the buffer contains unflushed data.
Sourcepub fn into_inner(self) -> W
pub fn into_inner(self) -> W
Consumes the BufWriter and returns the underlying writer.
Warning: Any buffered data that has not been flushed will be lost.
Trait Implementations§
Source§impl<W: AsyncWrite + Unpin> AsyncWrite for BufWriter<W>
impl<W: AsyncWrite + Unpin> AsyncWrite for BufWriter<W>
Source§fn poll_write(
self: Pin<&mut Self>,
cx: &mut Context<'_>,
buf: &[u8],
) -> Poll<Result<usize>>
fn poll_write( self: Pin<&mut Self>, cx: &mut Context<'_>, buf: &[u8], ) -> Poll<Result<usize>>
Attempt to write data from
buf.Source§fn poll_write_vectored(
self: Pin<&mut Self>,
cx: &mut Context<'_>,
bufs: &[IoSlice<'_>],
) -> Poll<Result<usize>>
fn poll_write_vectored( self: Pin<&mut Self>, cx: &mut Context<'_>, bufs: &[IoSlice<'_>], ) -> Poll<Result<usize>>
Attempt to write data from multiple buffers (vectored I/O).
Source§fn is_write_vectored(&self) -> bool
fn is_write_vectored(&self) -> bool
Returns whether this writer has efficient vectored writes.
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<W> AsyncWriteExt for Wwhere
W: AsyncWrite + ?Sized,
impl<W> AsyncWriteExt for Wwhere
W: AsyncWrite + ?Sized,
Source§fn write_all<'a>(&'a mut self, buf: &'a [u8]) -> WriteAll<'a, Self> ⓘwhere
Self: Unpin,
fn write_all<'a>(&'a mut self, buf: &'a [u8]) -> WriteAll<'a, Self> ⓘwhere
Self: Unpin,
Write all bytes from
buf.Source§fn write_all_buf<'a, B>(
&'a mut self,
buf: &'a mut B,
) -> WriteAllBuf<'a, Self, B> ⓘ
fn write_all_buf<'a, B>( &'a mut self, buf: &'a mut B, ) -> WriteAllBuf<'a, Self, B> ⓘ
Write all bytes from a buffer.
Source§fn write_vectored<'a>(
&'a mut self,
bufs: &'a [IoSlice<'a>],
) -> WriteVectored<'a, Self> ⓘwhere
Self: Unpin,
fn write_vectored<'a>(
&'a mut self,
bufs: &'a [IoSlice<'a>],
) -> WriteVectored<'a, Self> ⓘwhere
Self: Unpin,
Write data from multiple buffers (vectored I/O).
Source§impl<W> AsyncWriteVectored for Wwhere
W: AsyncWrite + ?Sized,
impl<W> AsyncWriteVectored for Wwhere
W: AsyncWrite + ?Sized,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, _span: NoopSpan) -> Self
fn instrument(self, _span: NoopSpan) -> Self
Instruments this future with a span (no-op when disabled).
Source§fn in_current_span(self) -> Self
fn in_current_span(self) -> Self
Instruments this future with the current span (no-op when disabled).