Struct style::rule_cache::RuleCache
source · pub struct RuleCache {
map: FxHashMap<StrongRuleNode, SmallVec<[(CachedConditions, Arc<ComputedValues>); 1]>>,
}
Expand description
A TLS cache from rules matched to computed values.
Fields§
§map: FxHashMap<StrongRuleNode, SmallVec<[(CachedConditions, Arc<ComputedValues>); 1]>>
Implementations§
source§impl RuleCache
impl RuleCache
sourcefn get_rule_node_for_cache<'r>(
guards: &StylesheetGuards<'_>,
rule_node: Option<&'r StrongRuleNode>,
) -> Option<&'r StrongRuleNode>
fn get_rule_node_for_cache<'r>( guards: &StylesheetGuards<'_>, rule_node: Option<&'r StrongRuleNode>, ) -> Option<&'r StrongRuleNode>
Walk the rule tree and return a rule node for using as the key for rule cache.
It currently skips animation / style attribute / preshint rules when they don’t contain any declaration of a reset property. We don’t skip other levels because walking the whole parent chain can be expensive.
TODO(emilio): Measure this, this was not super-well measured for performance (this was done for memory in bug 1427681)… Walking the rule tree might be worth it if we hit the cache enough?
sourcepub fn find(
&self,
guards: &StylesheetGuards<'_>,
builder_with_early_props: &StyleBuilder<'_>,
) -> Option<&ComputedValues>
pub fn find( &self, guards: &StylesheetGuards<'_>, builder_with_early_props: &StyleBuilder<'_>, ) -> Option<&ComputedValues>
Finds a node in the properties matched cache.
This needs to receive a StyleBuilder
with the early
properties
already applied.
sourcepub fn insert_if_possible(
&mut self,
guards: &StylesheetGuards<'_>,
style: &Arc<ComputedValues>,
pseudo: Option<&PseudoElement>,
conditions: &RuleCacheConditions,
) -> bool
pub fn insert_if_possible( &mut self, guards: &StylesheetGuards<'_>, style: &Arc<ComputedValues>, pseudo: Option<&PseudoElement>, conditions: &RuleCacheConditions, ) -> bool
Inserts a node into the rules cache if possible.
Returns whether the style was inserted into the cache.
Auto Trait Implementations§
impl Freeze for RuleCache
impl !RefUnwindSafe for RuleCache
impl Send for RuleCache
impl Sync for RuleCache
impl Unpin for RuleCache
impl !UnwindSafe for RuleCache
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> 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 moresource§impl<T> MaybeBoxed<Box<T>> for T
impl<T> MaybeBoxed<Box<T>> for T
source§fn maybe_boxed(self) -> Box<T>
fn maybe_boxed(self) -> Box<T>
Convert
source§impl<T> MaybeBoxed<T> for T
impl<T> MaybeBoxed<T> for T
source§fn maybe_boxed(self) -> T
fn maybe_boxed(self) -> T
Convert