Struct Cache

Source
struct Cache<T> {
    map: HashMap<i64, (u64, usize, Arc<T>)>,
    bytes: usize,
    tick: u64,
    protect: (i64, i64),
}
Expand description

Byte-budgeted LRU keyed by frame index on the project fps grid. The whole cache is cleared on any change that could affect the picture, so entries never go stale.

Fields§

§map: HashMap<i64, (u64, usize, Arc<T>)>

frame index -> (last-use tick, payload bytes, payload)

§bytes: usize§tick: u64§protect: (i64, i64)

Inclusive index range evicted last (playhead trail + prefetch horizon).

Implementations§

Source§

impl<T> Cache<T>

Source

fn new() -> Self

Source

fn set_protect(&mut self, lo: i64, hi: i64)

Frames in [lo, hi] are evicted only when nothing else is left to evict.

Source

fn get(&mut self, idx: i64) -> Option<Arc<T>>

Source

fn contains(&self, idx: i64) -> bool

Source

fn insert(&mut self, idx: i64, bytes: usize, v: Arc<T>) -> Vec<Arc<T>>

Insert and evict LRU entries down to the budget; evicted payloads come back for buffer recycling.

Source

fn evict_range(&mut self, lo: i64, hi: i64) -> Vec<Arc<T>>

Drop every entry whose index lies in [lo, hi], handing payloads back for recycling.

Source

fn drain(&mut self) -> Vec<Arc<T>>

Empty the cache, handing every payload back for buffer recycling.

Auto Trait Implementations§

§

impl<T> Freeze for Cache<T>

§

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

§

impl<T> Send for Cache<T>
where T: Sync + Send,

§

impl<T> Sync for Cache<T>
where T: Sync + Send,

§

impl<T> Unpin for Cache<T>

§

impl<T> UnwindSafe for Cache<T>
where T: RefUnwindSafe,

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.

§

impl<S> FromSample<S> for S

§

fn from_sample_(s: S) -> S

§

impl<T> Instrument for T

§

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

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

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
§

impl<T, U> ToSample<U> for T
where U: FromSample<T>,

§

fn to_sample_(self) -> U

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

impl<T> WithSubscriber for T

§

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
§

fn with_current_subscriber(self) -> WithDispatch<Self>

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

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<S, T> Duplex<S> for T
where T: FromSample<S> + ToSample<S>,

§

impl<T> MaybeSend for T

§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,