Skip to main content

FileScratch

Struct FileScratch 

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

A host Scratch over a temp file (milestone H): sequential appends go through a buffered writer; freeze flushes and memory-maps the file, so the staged pool is read (randomly and sequentially) straight from the map instead of RAM. Dropping it unmaps and deletes the temp file.

Implementations§

Source§

impl FileScratch

Source

pub fn create(path: impl Into<PathBuf>) -> Result<Self, HostError>

Creates (truncating) a staging file at path, ready for appends.

§Errors

HostError::Io if the file cannot be created.

Trait Implementations§

Source§

impl Drop for FileScratch

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

fn pin_drop(self: Pin<&mut Self>)

🔬This is a nightly-only experimental API. (pin_ergonomics)
Execute the destructor for this type, but different to Drop::drop, it requires self to be pinned. Read more
Source§

impl Scratch for FileScratch

Source§

type Error = HostError

Implementation-specific failure (I/O error, host callback error…).
Source§

fn write(&mut self, bytes: &[u8]) -> Result<(), HostError>

Appends bytes to the staging area. Not to be called after freeze.
Source§

fn len(&self) -> u64

Bytes appended so far.
Source§

fn freeze(&mut self) -> Result<&[u8], HostError>

Ends the build and borrows everything written as one contiguous slice, for random and sequential reads (a file backing typically maps itself here). The borrow keeps the region alive, which is also what forbids a later write.
Source§

fn is_empty(&self) -> bool

Whether nothing has been written yet.

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.