Skip to main content

Segment

Struct Segment 

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

A segment’s entries in memory, plus whether they differ from the file they were read from.

super holds one of these per process for the segment this application writes, and one for the read-only segment a bundle ships. cn export owns a third directly: the segment it warms into a bundle is one this process never reads back, so it is built and written as a value rather than through the process-global tiers.

Implementations§

Source§

impl Segment

Source

pub fn read_from(path: &Path) -> Self

Read path into memory. An absent, unreadable, or foreign file reads as an empty segment: whatever it held is regenerated, and the next write replaces it.

Source

pub fn get(&mut self, kind: CacheEntryKind, key: &str) -> Option<&[u8]>

The bytes stored for key, or None when the segment holds no such entry. Marks the entry used, so a flush does not evict what this run is running on.

Source

pub fn put(&mut self, kind: CacheEntryKind, key: &str, bytes: &[u8]) -> bool

Take bytes as key’s entry, reporting whether the segment took them.

An entry already holding at least as many bytes is left alone. Growth is the only reliable “new content” signal for a driver pipeline blob, which only accumulates but does not serialize deterministically (MoltenVK shuffles entry order run to run), so a byte compare would dirty the segment every launch. A content-addressed artifact re-stored under its own key is by definition the bytes already there.

Source

pub fn write_to(&mut self, path: &Path, budget: u64) -> bool

Replace path with what the segment now holds, first evicting entries until its payload fits budget. Reports whether the file was written.

A segment nothing changed is not rewritten: this is where the per-store growth check pays off, since a launch that only read the cache leaves the file untouched.

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> 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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

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