Struct style::invalidation::element::invalidator::Invalidation

source ·
pub struct Invalidation<'a> {
    dependency: &'a Dependency,
    scope: Option<OpaqueElement>,
    offset: usize,
    matched_by_any_previous: bool,
}
Expand description

An Invalidation is a complex selector that describes which elements, relative to a current element we are processing, must be restyled.

Fields§

§dependency: &'a Dependency

The dependency that generated this invalidation.

Note that the offset inside the dependency is not really useful after construction.

§scope: Option<OpaqueElement>

The right shadow host from where the rule came from, if any.

This is needed to ensure that we match the selector with the right state, as whether some selectors like :host and ::part() match depends on it.

§offset: usize

The offset of the selector pointing to a compound selector.

This order is a “parse order” offset, that is, zero is the leftmost part of the selector written as parsed / serialized.

It is initialized from the offset from dependency.

§matched_by_any_previous: bool

Whether the invalidation was already matched by any previous sibling or ancestor.

If this is the case, we can avoid pushing invalidations generated by this one if the generated invalidation is effective for all the siblings or descendants after us.

Implementations§

source§

impl<'a> Invalidation<'a>

source

pub fn new(dependency: &'a Dependency, scope: Option<OpaqueElement>) -> Self

Create a new invalidation for matching a dependency.

source

fn effective_for_next(&self) -> bool

Whether this invalidation is effective for the next sibling or descendant after us.

source

fn kind(&self) -> InvalidationKind

Trait Implementations§

source§

impl<'a> Clone for Invalidation<'a>

source§

fn clone(&self) -> Invalidation<'a>

Returns a copy 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<'a> Debug for Invalidation<'a>

source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<'a> Freeze for Invalidation<'a>

§

impl<'a> RefUnwindSafe for Invalidation<'a>

§

impl<'a> Send for Invalidation<'a>

§

impl<'a> Sync for Invalidation<'a>

§

impl<'a> Unpin for Invalidation<'a>

§

impl<'a> UnwindSafe for Invalidation<'a>

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, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. 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> 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
source§

impl<T> MaybeBoxed<Box<T>> for T

source§

fn maybe_boxed(self) -> Box<T>

Convert
source§

impl<T> MaybeBoxed<T> for T

source§

fn maybe_boxed(self) -> T

Convert
source§

impl<T> Pointable for T

source§

const ALIGN: usize = _

The alignment of pointer.
source§

type Init = T

The type for initializers.
source§

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

Initializes a with the given initializer. Read more
source§

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

Dereferences the given pointer. Read more
source§

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

Mutably dereferences the given pointer. Read more
source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
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.
source§

impl<T> ErasedDestructor for T
where T: 'static,

source§

impl<T> MaybeSendSync for T