Struct IconCache

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

In-memory cache of rasterized Lucide / Devicon / SVG icons.

Entries live for the lifetime of the cache; there is no eviction. SVG parse failure is cached as a transparent square, and unsupported Devicons use the framework’s generic-file glyph.

§Examples

use ailloli_ui_render_wgpu::icons::IconCache;
let cache = IconCache::new();
let _ = cache;

Implementations§

Source§

impl IconCache

Source

pub fn new() -> Self

Loads the bundled Lucide and Devicon fonts and creates an empty cache.

§Panics

Panics only if a bundled, build-time font asset is invalid.

§Examples
use ailloli_ui_render_wgpu::icons::IconCache;
let cache = IconCache::new();
let _ = cache;
Source

pub fn get_or_create( &mut self, device: &Device, queue: &Queue, bind_group_layout: &BindGroupLayout, key: &IconKey, ) -> &IconGpu

Returns the cached GPU icon or rasterizes and uploads it once.

key.px_size is clamped upward to eight for allocation and rasterization, while the original key is retained. The returned reference remains valid until the cache is mutably borrowed again.

§Panics

Panics on impossible cache inconsistency or GPU allocation validation failure. Invalid SVG itself produces a transparent texture instead.

§Examples
use ailloli_ui_render_wgpu::{icons::IconCache, IconKey};
fn upload<'a>(cache: &'a mut IconCache, device: &wgpu::Device,
    queue: &wgpu::Queue, layout: &wgpu::BindGroupLayout,
    key: &IconKey) -> &'a ailloli_ui_render_wgpu::icons::IconGpu {
    cache.get_or_create(device, queue, layout, key)
}
Source

pub fn get(&self, key: &IconKey) -> Option<&IconGpu>

Looks up a previously uploaded icon without mutating the cache.

Returns None before Self::get_or_create has inserted the exact key.

§Examples
use ailloli_ui_core::IconId;
use ailloli_ui_render_wgpu::{icons::IconCache, IconKey};
let cache = IconCache::new();
let key = IconKey { icon: IconId::Plus, px_size: 16, scale_100: 100 };
assert!(cache.get(&key).is_none());

Trait Implementations§

Source§

impl Default for IconCache

Source§

fn default() -> Self

Returns the “default value” for a 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
§

impl<T> Downcast<T> for T

§

fn downcast(&self) -> &T

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

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

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

Initializes a with the given initializer. Read more
§

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

Dereferences the given pointer. Read more
§

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

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

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

impl<R, P> ReadPrimitive<R> for P
where R: Read + ReadEndian<P>, P: Default,

Source§

fn read_from_little_endian(read: &mut R) -> Result<Self, Error>

Read this value from the supplied reader. Same as ReadEndian::read_from_little_endian().
Source§

fn read_from_big_endian(read: &mut R) -> Result<Self, Error>

Read this value from the supplied reader. Same as ReadEndian::read_from_big_endian().
Source§

fn read_from_native_endian(read: &mut R) -> Result<Self, Error>

Read this value from the supplied reader. Same as ReadEndian::read_from_native_endian().
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
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> Upcast<T> for T

§

fn upcast(&self) -> Option<&T>

§

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<T> ErasedDestructor for T
where T: 'static,

§

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

§

impl<T> WasmNotSend for T
where T: Send,

§

impl<T> WasmNotSendSync for T
where T: WasmNotSend + WasmNotSync,

§

impl<T> WasmNotSync for T
where T: Sync,