pub struct TextShapeCache {
pub hits: u64,
pub misses: u64,
/* private fields */
}Expand description
Cache for shaped text results.
Uses version-based keys to invalidate cached data when text content, font properties, or layout constraints change.
Fields§
§hits: u64Statistics for monitoring cache performance
misses: u64Implementations§
Source§impl TextShapeCache
impl TextShapeCache
Sourcepub fn get_or_shape<F>(
&mut self,
key: ShapeKey,
shape_fn: F,
) -> Arc<ShapedTextData>where
F: FnOnce() -> ShapedTextData,
pub fn get_or_shape<F>(
&mut self,
key: ShapeKey,
shape_fn: F,
) -> Arc<ShapedTextData>where
F: FnOnce() -> ShapedTextData,
Get cached shaped text or compute it.
Returns an Arc to the shaped data, allowing cheap cloning and sharing. The cache is invalidated automatically when the key changes (version bump).
Sourcepub fn get(&mut self, key: &ShapeKey) -> Option<Arc<ShapedTextData>>
pub fn get(&mut self, key: &ShapeKey) -> Option<Arc<ShapedTextData>>
Get cached data without computing if missing.
Sourcepub fn insert(
&mut self,
key: ShapeKey,
data: ShapedTextData,
) -> Arc<ShapedTextData>
pub fn insert( &mut self, key: ShapeKey, data: ShapedTextData, ) -> Arc<ShapedTextData>
Insert shaped data into the cache.
Sourcepub fn prune_old_versions(&mut self, min_version: u32)
pub fn prune_old_versions(&mut self, min_version: u32)
Remove entries older than a certain version (garbage collection).
Sourcepub fn stats_string(&self) -> String
pub fn stats_string(&self) -> String
Get cache statistics as a formatted string.
Sourcepub fn avg_renders_per_entry(&self) -> f32
pub fn avg_renders_per_entry(&self) -> f32
Get average renders per cached entry (effectiveness metric).
Trait Implementations§
Auto Trait Implementations§
impl Freeze for TextShapeCache
impl RefUnwindSafe for TextShapeCache
impl Send for TextShapeCache
impl Sync for TextShapeCache
impl Unpin for TextShapeCache
impl UnsafeUnpin for TextShapeCache
impl UnwindSafe for TextShapeCache
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Convert
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Convert
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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