Struct StyleChain
pub struct StyleChain<'a> { /* private fields */ }Expand description
A chain of styles, similar to a linked list.
A style chain allows to combine properties from multiple style lists in a element hierarchy in a non-allocating way. Rather than eagerly merging the lists, each access walks the hierarchy from the innermost to the outermost map, trying to find a match and then folding it with matches further up the chain.
Implementations§
§impl<'a> StyleChain<'a>
impl<'a> StyleChain<'a>
pub fn new(root: &'a Styles) -> StyleChain<'a>
pub fn new(root: &'a Styles) -> StyleChain<'a>
Start a new style chain with root styles.
pub fn get<E, const I: u8>(
self,
field: Field<E, I>,
) -> <E as SettableProperty<I>>::Type
pub fn get<E, const I: u8>( self, field: Field<E, I>, ) -> <E as SettableProperty<I>>::Type
Retrieves the value of the given field from the style chain.
A Field value is a zero-sized value that specifies which field of an
element you want to retrieve on the type-system level. It also ensures
that Rust can infer the correct return type.
Should be preferred over get_cloned or
get_ref, but is only available for Copy types.
For other types an explicit decision needs to be made whether cloning is
necessary.
pub fn get_cloned<E, const I: u8>(
self,
_: Field<E, I>,
) -> <E as SettableProperty<I>>::Typewhere
E: SettableProperty<I>,
pub fn get_cloned<E, const I: u8>(
self,
_: Field<E, I>,
) -> <E as SettableProperty<I>>::Typewhere
E: SettableProperty<I>,
pub fn get_ref<E, const I: u8>(
self,
_: Field<E, I>,
) -> &'a <E as SettableProperty<I>>::Typewhere
E: RefableProperty<I>,
pub fn get_ref<E, const I: u8>(
self,
_: Field<E, I>,
) -> &'a <E as SettableProperty<I>>::Typewhere
E: RefableProperty<I>,
Retrieves a reference to the value of the given field from the style chain.
Not possible if the value needs folding.
pub fn resolve<E, const I: u8>(
self,
field: Field<E, I>,
) -> <<E as SettableProperty<I>>::Type as Resolve>::Output
pub fn resolve<E, const I: u8>( self, field: Field<E, I>, ) -> <<E as SettableProperty<I>>::Type as Resolve>::Output
Retrieves the value and then immediately resolves it.
pub fn chain<'b, C>(&'b self, local: &'b C) -> StyleChain<'b>
pub fn chain<'b, C>(&'b self, local: &'b C) -> StyleChain<'b>
Make the given chainable the first link of this chain.
The resulting style chain contains styles from local as well as
self. The ones from local take precedence over the ones from
self. For folded properties local contributes the inner value.
pub fn suffix(self, len: usize) -> Styles
pub fn suffix(self, len: usize) -> Styles
Build owned styles from the suffix (all links beyond the len) of the
chain.
pub fn pop(&mut self)
pub fn pop(&mut self)
Remove the last link from the chain.
pub fn trunk(
iter: impl IntoIterator<Item = StyleChain<'a>>,
) -> Option<StyleChain<'a>>
pub fn trunk( iter: impl IntoIterator<Item = StyleChain<'a>>, ) -> Option<StyleChain<'a>>
Determine the shared trunk of a collection of style chains.
pub fn trunk_from_pairs(
iter: &[(&Content, StyleChain<'a>)],
) -> Option<StyleChain<'a>>
pub fn trunk_from_pairs( iter: &[(&Content, StyleChain<'a>)], ) -> Option<StyleChain<'a>>
Determines the shared trunk of a list of elements.
This will ignore styles for tags (conceptually, they just don’t exist).
Trait Implementations§
§impl<'a> Clone for StyleChain<'a>
impl<'a> Clone for StyleChain<'a>
§fn clone(&self) -> StyleChain<'a>
fn clone(&self) -> StyleChain<'a>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more§impl Debug for StyleChain<'_>
impl Debug for StyleChain<'_>
§impl<'a> Default for StyleChain<'a>
impl<'a> Default for StyleChain<'a>
§fn default() -> StyleChain<'a>
fn default() -> StyleChain<'a>
§impl<'a> Hash for StyleChain<'a>
impl<'a> Hash for StyleChain<'a>
§impl PartialEq for StyleChain<'_>
impl PartialEq for StyleChain<'_>
impl<'a> Copy for StyleChain<'a>
Auto Trait Implementations§
impl<'a> Freeze for StyleChain<'a>
impl<'a> !RefUnwindSafe for StyleChain<'a>
impl<'a> Send for StyleChain<'a>
impl<'a> Sync for StyleChain<'a>
impl<'a> Unpin for StyleChain<'a>
impl<'a> !UnwindSafe for StyleChain<'a>
Blanket Implementations§
Source§impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for Swhere
T: Real + Zero + Arithmetics + Clone,
Swp: WhitePoint<T>,
Dwp: WhitePoint<T>,
D: AdaptFrom<S, Swp, Dwp, T>,
impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for Swhere
T: Real + Zero + Arithmetics + Clone,
Swp: WhitePoint<T>,
Dwp: WhitePoint<T>,
D: AdaptFrom<S, Swp, Dwp, T>,
Source§fn adapt_into_using<M>(self, method: M) -> Dwhere
M: TransformMatrix<T>,
fn adapt_into_using<M>(self, method: M) -> Dwhere
M: TransformMatrix<T>,
Source§fn adapt_into(self) -> D
fn adapt_into(self) -> D
§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
§type ArchivedMetadata = ()
type ArchivedMetadata = ()
§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Source§impl<T, C> ArraysFrom<C> for Twhere
C: IntoArrays<T>,
impl<T, C> ArraysFrom<C> for Twhere
C: IntoArrays<T>,
Source§fn arrays_from(colors: C) -> T
fn arrays_from(colors: C) -> T
Source§impl<T, C> ArraysInto<C> for Twhere
C: FromArrays<T>,
impl<T, C> ArraysInto<C> for Twhere
C: FromArrays<T>,
Source§fn arrays_into(self) -> C
fn arrays_into(self) -> C
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
§impl<T> CallHasher for T
impl<T> CallHasher for T
Source§impl<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for Uwhere
T: FromCam16Unclamped<WpParam, U>,
impl<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for Uwhere
T: FromCam16Unclamped<WpParam, U>,
Source§type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar
type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar
parameters when converting.Source§fn cam16_into_unclamped(
self,
parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>,
) -> T
fn cam16_into_unclamped( self, parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>, ) -> T
self into C, using the provided parameters.Source§impl<T> CheckedAs for T
impl<T> CheckedAs for T
Source§fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
Source§impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
Source§fn checked_cast_from(src: Src) -> Option<Dst>
fn checked_cast_from(src: Src) -> Option<Dst>
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T, C> ComponentsFrom<C> for Twhere
C: IntoComponents<T>,
impl<T, C> ComponentsFrom<C> for Twhere
C: IntoComponents<T>,
Source§fn components_from(colors: C) -> T
fn components_from(colors: C) -> T
§impl<F, W, T, D> Deserialize<With<T, W>, D> for F
impl<F, W, T, D> Deserialize<With<T, W>, D> for F
§fn deserialize(
&self,
deserializer: &mut D,
) -> Result<With<T, W>, <D as Fallible>::Error>
fn deserialize( &self, deserializer: &mut D, ) -> Result<With<T, W>, <D as Fallible>::Error>
§impl<T> Filterable for T
impl<T> Filterable for T
Source§impl<T> FromAngle<T> for T
impl<T> FromAngle<T> for T
Source§fn from_angle(angle: T) -> T
fn from_angle(angle: T) -> T
angle.Source§impl<T, U> FromStimulus<U> for Twhere
U: IntoStimulus<T>,
impl<T, U> FromStimulus<U> for Twhere
U: IntoStimulus<T>,
Source§fn from_stimulus(other: U) -> T
fn from_stimulus(other: U) -> T
other into Self, while performing the appropriate scaling,
rounding and clamping.Source§impl<T, U> IntoAngle<U> for Twhere
U: FromAngle<T>,
impl<T, U> IntoAngle<U> for Twhere
U: FromAngle<T>,
Source§fn into_angle(self) -> U
fn into_angle(self) -> U
T.Source§impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for Uwhere
T: Cam16FromUnclamped<WpParam, U>,
impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for Uwhere
T: Cam16FromUnclamped<WpParam, U>,
Source§type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar
type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar
parameters when converting.Source§fn into_cam16_unclamped(
self,
parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>,
) -> T
fn into_cam16_unclamped( self, parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>, ) -> T
self into C, using the provided parameters.Source§impl<T, U> IntoColor<U> for Twhere
U: FromColor<T>,
impl<T, U> IntoColor<U> for Twhere
U: FromColor<T>,
Source§fn into_color(self) -> U
fn into_color(self) -> U
Source§impl<T, U> IntoColorUnclamped<U> for Twhere
U: FromColorUnclamped<T>,
impl<T, U> IntoColorUnclamped<U> for Twhere
U: FromColorUnclamped<T>,
Source§fn into_color_unclamped(self) -> U
fn into_color_unclamped(self) -> U
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>
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>
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> IntoStimulus<T> for T
impl<T> IntoStimulus<T> for T
Source§fn into_stimulus(self) -> T
fn into_stimulus(self) -> T
self into T, while performing the appropriate scaling,
rounding and clamping.§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Source§impl<T> OverflowingAs for T
impl<T> OverflowingAs for T
Source§fn overflowing_as<Dst>(self) -> (Dst, bool)where
T: OverflowingCast<Dst>,
fn overflowing_as<Dst>(self) -> (Dst, bool)where
T: OverflowingCast<Dst>,
Source§impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere
Src: OverflowingCast<Dst>,
impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere
Src: OverflowingCast<Dst>,
Source§fn overflowing_cast_from(src: Src) -> (Dst, bool)
fn overflowing_cast_from(src: Src) -> (Dst, bool)
§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> SaturatingAs for T
impl<T> SaturatingAs for T
Source§fn saturating_as<Dst>(self) -> Dstwhere
T: SaturatingCast<Dst>,
fn saturating_as<Dst>(self) -> Dstwhere
T: SaturatingCast<Dst>,
Source§impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere
Src: SaturatingCast<Dst>,
impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere
Src: SaturatingCast<Dst>,
Source§fn saturating_cast_from(src: Src) -> Dst
fn saturating_cast_from(src: Src) -> Dst
Source§impl<T, C> TryComponentsInto<C> for Twhere
C: TryFromComponents<T>,
impl<T, C> TryComponentsInto<C> for Twhere
C: TryFromComponents<T>,
Source§type Error = <C as TryFromComponents<T>>::Error
type Error = <C as TryFromComponents<T>>::Error
try_into_colors fails to cast.Source§fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>
fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>
Source§impl<T, U> TryIntoColor<U> for Twhere
U: TryFromColor<T>,
impl<T, U> TryIntoColor<U> for Twhere
U: TryFromColor<T>,
Source§fn try_into_color(self) -> Result<U, OutOfBounds<U>>
fn try_into_color(self) -> Result<U, OutOfBounds<U>>
OutOfBounds error is returned which contains
the unclamped color. Read more