Skip to main content

BufWriter

Struct BufWriter 

Source
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 called
  • shutdown() 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>

Source

pub fn new(inner: W) -> Self

Creates a new BufWriter with the default buffer capacity (8192 bytes).

Source

pub fn with_capacity(capacity: usize, inner: W) -> Self

Creates a new BufWriter with the specified buffer capacity.

Source

pub fn get_ref(&self) -> &W

Returns a reference to the underlying writer.

Source

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.

Source

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.

Source

pub fn buffer(&self) -> &[u8]

Returns the current buffer contents.

This is the data that has been written to the BufWriter but has not yet been flushed to the underlying writer.

Source

pub fn capacity(&self) -> usize

Returns the capacity of the internal buffer.

Trait Implementations§

Source§

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

Source§

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

Attempt to write data from multiple buffers (vectored I/O).
Source§

fn is_write_vectored(&self) -> bool

Returns whether this writer has efficient vectored writes.
Source§

fn poll_flush(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Result<()>>

Attempt to flush buffered data.
Source§

fn poll_shutdown(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Result<()>>

Attempt to shutdown the writer.
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

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

Source§

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>
where Self: Unpin, B: Buf + Unpin + ?Sized,

Write all bytes from a buffer.
Source§

fn write_u8(&mut self, n: u8) -> WriteU8<'_, Self>
where Self: Unpin,

Write a single byte.
Source§

fn flush(&mut self) -> Flush<'_, Self>
where Self: Unpin,

Flush buffered data.
Source§

fn shutdown(&mut self) -> Shutdown<'_, Self>
where Self: Unpin,

Shutdown the writer.
Source§

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 W
where W: AsyncWrite + ?Sized,

Source§

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

Returns whether this writer has efficient vectored writes.
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> Instrument for T

Source§

fn instrument(self, _span: NoopSpan) -> Self

Instruments this future with a span (no-op when disabled).
Source§

fn in_current_span(self) -> Self

Instruments this future with the current span (no-op when disabled).
Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> Same for T

Source§

type Output = T

Should always be Self
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.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more