LargeBuffer

Struct LargeBuffer 

Source
pub struct LargeBuffer { /* private fields */ }
Expand description

A large buffer backed by a temporary file.

This buffer uses a file to store data, with optional memory mapping for efficient access to large datasets.

Implementations§

Source§

impl LargeBuffer

Source

pub fn new() -> Result<Self>

Create a new large buffer with a temporary file.

§Errors

Returns an error if the temporary file cannot be created.

Source

pub fn with_path(path: &Path) -> Result<Self>

Create a new large buffer at the specified path.

§Errors

Returns an error if the file cannot be created.

Source

pub const fn set_cleanup(&mut self, cleanup: bool)

Set whether to delete the file on drop.

Source

pub fn path(&self) -> &Path

Get the path to the backing file.

Source

pub fn append(&mut self, data: &[u8]) -> Result<()>

Append data to the buffer.

§Errors

Returns an error if the write fails.

Source

pub const fn len(&self) -> usize

Get the current size of the buffer.

Source

pub const fn is_empty(&self) -> bool

Check if the buffer is empty.

Source

pub fn read_range(&mut self, start: usize, len: usize) -> Result<Vec<u8>>

Read a range of bytes from the buffer.

§Errors

Returns an error if the read fails.

Source

pub fn read_all(&mut self) -> Result<Vec<u8>>

Read all data from the buffer.

§Errors

Returns an error if the read fails.

Source

pub fn tail(&mut self, n: usize) -> Result<Vec<u8>>

Read the last N bytes from the buffer.

§Errors

Returns an error if the read fails.

Source

pub fn head(&mut self, n: usize) -> Result<Vec<u8>>

Read the first N bytes from the buffer.

§Errors

Returns an error if the read fails.

Source

pub fn clear(&mut self) -> Result<()>

Clear the buffer.

§Errors

Returns an error if the truncation fails.

Source

pub fn find(&mut self, needle: &[u8]) -> Result<Option<usize>>

Find a byte sequence in the buffer.

This performs a linear search through the file.

§Errors

Returns an error if reading fails.

Source

pub fn find_str(&mut self, needle: &str) -> Result<Option<usize>>

Find a string in the buffer.

§Errors

Returns an error if reading fails.

Source

pub fn as_str_lossy(&mut self) -> Result<String>

Read data as a string (lossy UTF-8 conversion).

§Errors

Returns an error if reading fails.

Source

pub fn consume(&mut self, len: usize) -> Result<Vec<u8>>

Consume data from the beginning of the buffer.

This is expensive for large buffers as it requires rewriting the file.

§Errors

Returns an error if the operation fails.

Source

pub fn sync(&self) -> Result<()>

Sync the buffer to disk.

§Errors

Returns an error if sync fails.

Trait Implementations§

Source§

impl Debug for LargeBuffer

Source§

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

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

impl Drop for LargeBuffer

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more

Auto Trait Implementations§

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.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V