LogBuffer

Struct LogBuffer 

Source
pub struct LogBuffer<T: AsRef<[u8]> + AsMut<[u8]>> { /* private fields */ }
Expand description

A ring buffer that stores UTF-8 text.

Anything that implements AsMut<[u8]> can be used for backing storage; e.g. [u8; N], Vec<[u8]>, Box<[u8]>.

Implementations§

Source§

impl<T: AsRef<[u8]> + AsMut<[u8]>> LogBuffer<T>

Source

pub fn new(storage: T) -> LogBuffer<T>

Creates a new ring buffer, backed by storage.

The buffer is cleared after creation.

Source

pub fn clear(&mut self)

Clears the buffer.

Only the text written after clearing will be read out by a future extraction.

This function takes O(n) time where n is buffer length.

Source

pub fn is_empty(&self) -> bool

Checks whether the ring buffer is empty.

This function takes O(1) time.

Source

pub fn extract(&mut self) -> &str

Extracts the contents of the ring buffer as a string slice, excluding any partially overwritten UTF-8 code unit sequences at the beginning.

Extraction rotates the contents of the ring buffer such that all of its contents becomes contiguous in memory.

This function takes O(n) time where n is buffer length.

Source

pub fn extract_lines(&mut self) -> Lines<'_>

Extracts the contents of the ring buffer as an iterator over its lines, excluding any partially overwritten lines at the beginning.

The first line written to the ring buffer after clearing it should start with '\n', or it will be treated as partially overwritten and lost.

Extraction rotates the contents of the ring buffer such that all of its contents becomes contiguous in memory.

This function takes O(n) time where n is buffer length.

Trait Implementations§

Source§

impl<T: Debug + AsRef<[u8]> + AsMut<[u8]>> Debug for LogBuffer<T>

Source§

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

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

impl<T: AsRef<[u8]> + AsMut<[u8]>> Write for LogBuffer<T>

Source§

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

Append s to the ring buffer.

This function takes O(n) time where n is length of s.

1.1.0 · Source§

fn write_char(&mut self, c: char) -> Result<(), Error>

Writes a char into this writer, returning whether the write succeeded. Read more
1.0.0 · Source§

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

Glue for usage of the write! macro with implementors of this trait. Read more

Auto Trait Implementations§

§

impl<T> Freeze for LogBuffer<T>
where T: Freeze,

§

impl<T> RefUnwindSafe for LogBuffer<T>
where T: RefUnwindSafe,

§

impl<T> Send for LogBuffer<T>
where T: Send,

§

impl<T> Sync for LogBuffer<T>
where T: Sync,

§

impl<T> Unpin for LogBuffer<T>
where T: Unpin,

§

impl<T> UnwindSafe for LogBuffer<T>
where T: 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> 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.