LazyLayoutKey

Enum LazyLayoutKey 

Source
pub enum LazyLayoutKey {
    User(u64),
    Index(usize),
}
Expand description

Key type for lazy list items.

Separates user-provided keys from default index-based keys to prevent collisions. This matches JC’s getDefaultLazyLayoutKey() pattern where a wrapper type (DefaultLazyKey) ensures default keys never collide with user-provided keys.

§JC Reference

  • LazyLayoutIntervalContent.getKey() returns content.key?.invoke(localIndex) ?: getDefaultLazyLayoutKey(index)
  • Lazy.android.kt defines DefaultLazyKey(index) as a wrapper data class

Variants§

§

User(u64)

User-provided key (from scope.item(key: Some(k), ...) or scope.items(key: Some(|i| ...), ...))

§

Index(usize)

Default key based on global index. Cannot collide with User keys due to enum separation.

Implementations§

Source§

impl LazyLayoutKey

Source

pub fn to_slot_id(self) -> u64

Converts to u64 for slot ID usage with guaranteed non-overlapping ranges.

§Encoding

Uses high 2 bits of the 64-bit slot ID as a type tag:

  • User keys: 0b00 tag + 62-bit value (range: 0x0000… - 0x3FFF…)
  • Index keys: 0b01 tag + 62-bit value (range: 0x4000… - 0x7FFF…)
§⚠️ Large Key Handling

Values larger than 62 bits are mixed down to 62 bits. This avoids panics for extreme indices (e.g. usize::MAX) but introduces a small chance of collisions for out-of-range keys. Prefer keys that fit in 62 bits when you need guaranteed collision-free IDs.

§Cross-Platform Safety

The slot ID is always u64 regardless of target platform.

Source

pub fn is_user_key(self) -> bool

Returns true if this is a user-provided key.

Source

pub fn is_index_key(self) -> bool

Returns true if this is a default index-based key.

Trait Implementations§

Source§

impl Clone for LazyLayoutKey

Source§

fn clone(&self) -> LazyLayoutKey

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for LazyLayoutKey

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Hash for LazyLayoutKey

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for LazyLayoutKey

Source§

fn eq(&self, other: &LazyLayoutKey) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Copy for LazyLayoutKey

Source§

impl Eq for LazyLayoutKey

Source§

impl StructuralPartialEq for LazyLayoutKey

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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.