Class

SubcomposeSlotReusePolicy.SlotIdsSet

Set containing slot ids currently available to reuse.

Common
class SlotIdsSet
    internal constructor(
        @PublishedApi
        internal val set: MutableOrderedScatterSet<Any?> = mutableOrderedScatterSetOf()
    ) : Collection<Any?>

Set containing slot ids currently available to reuse. Used by getSlotsToRetain. The set retains the insertion order of its elements, guaranteeing stable iteration order.

This class works exactly as MutableSet, but doesn't allow to add new items in it.

Functions

remove

fun remove(slotId: Any?): Boolean

Removes a slotId from this set, if it is present.

Returns

true if the slot id was removed, false if the set was not modified.

removeAll

fun removeAll(slotIds: Collection<Any?>): Boolean

Removes all slot ids from slotIds that are also contained in this set.

Returns

true if any slot id was removed, false if the set was not modified.

removeAll

fun removeAll(predicate: (Any?) -> Boolean): Boolean

Removes all slot ids that match the given predicate.

Returns

true if any slot id was removed, false if the set was not modified.

retainAll

fun retainAll(slotIds: Collection<Any?>): Boolean

Retains only the slot ids that are contained in slotIds.

Returns

true if any slot id was removed, false if the set was not modified.

retainAll

fun retainAll(predicate: (Any?) -> Boolean): Boolean

Retains only slotIds that match the given predicate.

Returns

true if any slot id was removed, false if the set was not modified.

clear

fun clear() = set.clear()

Removes all slot ids from this set.


trimToSize

fun trimToSize(maxSlotsToRetainForReuse: Int) = set.trimToSize(maxSlotsToRetainForReuse)

Remove entries until size equals maxSlotsToRetainForReuse. Entries inserted last are removed first.


forEach

fun forEach(block: (Any?) -> Unit) = set.forEach(block)

Iterates over every element stored in this set by invoking the specified block lambda. The iteration order is the same as the insertion order. It is safe to remove the element passed to block during iteration.

NOTE: This method is obscured by Collection<T>.forEach since it is marked with


fastForEach

inline fun fastForEach(block: (Any?) -> Unit) = set.forEach(block)

Iterates over every element stored in this set by invoking the specified block lambda. The iteration order is the same as the insertion order. It is safe to remove the element passed to block during iteration.

NOTE: this method was added in order to allow for a more performant forEach method. It is necessary because forEach is obscured by Collection<T>.forEach since it is marked with @HidesMember.