pub trait ToResolvedValue {
type ResolvedValue;
// Required methods
fn to_resolved_value(self, context: &Context<'_>) -> Self::ResolvedValue;
fn from_resolved_value(resolved: Self::ResolvedValue) -> Self;
}Expand description
A trait to represent the conversion between resolved and resolved values.
This trait is derivable with #[derive(ToResolvedValue)].
The deriving code assumes that if the type isn’t generic, then the trait can
be implemented as simple move. This means that a manual implementation with
ResolvedValue = Self is bogus if it returns anything else than a clone.
Required Associated Types§
Sourcetype ResolvedValue
type ResolvedValue
The resolved value type we’re going to be converted to.
Required Methods§
Sourcefn to_resolved_value(self, context: &Context<'_>) -> Self::ResolvedValue
fn to_resolved_value(self, context: &Context<'_>) -> Self::ResolvedValue
Convert a resolved value to a resolved value.
Sourcefn from_resolved_value(resolved: Self::ResolvedValue) -> Self
fn from_resolved_value(resolved: Self::ResolvedValue) -> Self
Convert a resolved value to resolved value form.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".
Implementations on Foreign Types§
Source§impl ToResolvedValue for ()
impl ToResolvedValue for ()
type ResolvedValue = ()
fn to_resolved_value(self, _: &Context<'_>) -> Self
fn from_resolved_value(resolved: Self::ResolvedValue) -> Self
Source§impl ToResolvedValue for AllowedNumericType
impl ToResolvedValue for AllowedNumericType
type ResolvedValue = AllowedNumericType
fn to_resolved_value(self, _: &Context<'_>) -> Self
fn from_resolved_value(resolved: Self::ResolvedValue) -> Self
Source§impl ToResolvedValue for Box<str>
impl ToResolvedValue for Box<str>
type ResolvedValue = Box<str>
fn to_resolved_value(self, _: &Context<'_>) -> Self
fn from_resolved_value(resolved: Self::ResolvedValue) -> Self
Source§impl ToResolvedValue for String
impl ToResolvedValue for String
type ResolvedValue = String
fn to_resolved_value(self, _: &Context<'_>) -> Self
fn from_resolved_value(resolved: Self::ResolvedValue) -> Self
Source§impl ToResolvedValue for bool
impl ToResolvedValue for bool
type ResolvedValue = bool
fn to_resolved_value(self, _: &Context<'_>) -> Self
fn from_resolved_value(resolved: Self::ResolvedValue) -> Self
Source§impl ToResolvedValue for f32
impl ToResolvedValue for f32
type ResolvedValue = f32
fn to_resolved_value(self, _: &Context<'_>) -> Self
fn from_resolved_value(resolved: Self::ResolvedValue) -> Self
Source§impl ToResolvedValue for i8
impl ToResolvedValue for i8
type ResolvedValue = i8
fn to_resolved_value(self, _: &Context<'_>) -> Self
fn from_resolved_value(resolved: Self::ResolvedValue) -> Self
Source§impl ToResolvedValue for i16
impl ToResolvedValue for i16
type ResolvedValue = i16
fn to_resolved_value(self, _: &Context<'_>) -> Self
fn from_resolved_value(resolved: Self::ResolvedValue) -> Self
Source§impl ToResolvedValue for i32
impl ToResolvedValue for i32
type ResolvedValue = i32
fn to_resolved_value(self, _: &Context<'_>) -> Self
fn from_resolved_value(resolved: Self::ResolvedValue) -> Self
Source§impl ToResolvedValue for u8
impl ToResolvedValue for u8
type ResolvedValue = u8
fn to_resolved_value(self, _: &Context<'_>) -> Self
fn from_resolved_value(resolved: Self::ResolvedValue) -> Self
Source§impl ToResolvedValue for u16
impl ToResolvedValue for u16
type ResolvedValue = u16
fn to_resolved_value(self, _: &Context<'_>) -> Self
fn from_resolved_value(resolved: Self::ResolvedValue) -> Self
Source§impl ToResolvedValue for u32
impl ToResolvedValue for u32
type ResolvedValue = u32
fn to_resolved_value(self, _: &Context<'_>) -> Self
fn from_resolved_value(resolved: Self::ResolvedValue) -> Self
Source§impl ToResolvedValue for usize
impl ToResolvedValue for usize
type ResolvedValue = usize
fn to_resolved_value(self, _: &Context<'_>) -> Self
fn from_resolved_value(resolved: Self::ResolvedValue) -> Self
Source§impl<A, B> ToResolvedValue for (A, B)where
A: ToResolvedValue,
B: ToResolvedValue,
impl<A, B> ToResolvedValue for (A, B)where
A: ToResolvedValue,
B: ToResolvedValue,
type ResolvedValue = (<A as ToResolvedValue>::ResolvedValue, <B as ToResolvedValue>::ResolvedValue)
fn to_resolved_value(self, context: &Context<'_>) -> Self::ResolvedValue
fn from_resolved_value(resolved: Self::ResolvedValue) -> Self
Source§impl<T> ToResolvedValue for Arc<T>where
T: ToResolvedValue<ResolvedValue = T>,
impl<T> ToResolvedValue for Arc<T>where
T: ToResolvedValue<ResolvedValue = T>,
type ResolvedValue = Arc<T>
fn to_resolved_value(self, _: &Context<'_>) -> Self
fn from_resolved_value(resolved: Self) -> Self
Source§impl<T> ToResolvedValue for Box<T>where
T: ToResolvedValue,
impl<T> ToResolvedValue for Box<T>where
T: ToResolvedValue,
type ResolvedValue = Box<<T as ToResolvedValue>::ResolvedValue>
fn to_resolved_value(self, context: &Context<'_>) -> Self::ResolvedValue
fn from_resolved_value(resolved: Self::ResolvedValue) -> Self
Source§impl<T> ToResolvedValue for Box<[T]>where
T: ToResolvedValue,
impl<T> ToResolvedValue for Box<[T]>where
T: ToResolvedValue,
type ResolvedValue = Box<[<T as ToResolvedValue>::ResolvedValue]>
fn to_resolved_value(self, context: &Context<'_>) -> Self::ResolvedValue
fn from_resolved_value(resolved: Self::ResolvedValue) -> Self
Source§impl<T> ToResolvedValue for Option<T>where
T: ToResolvedValue,
impl<T> ToResolvedValue for Option<T>where
T: ToResolvedValue,
type ResolvedValue = Option<<T as ToResolvedValue>::ResolvedValue>
fn to_resolved_value(self, context: &Context<'_>) -> Self::ResolvedValue
fn from_resolved_value(resolved: Self::ResolvedValue) -> Self
Source§impl<T> ToResolvedValue for SmallVec<[T; 1]>where
T: ToResolvedValue,
impl<T> ToResolvedValue for SmallVec<[T; 1]>where
T: ToResolvedValue,
type ResolvedValue = SmallVec<[<T as ToResolvedValue>::ResolvedValue; 1]>
fn to_resolved_value(self, context: &Context<'_>) -> Self::ResolvedValue
fn from_resolved_value(resolved: Self::ResolvedValue) -> Self
Source§impl<T> ToResolvedValue for ThinVec<T>where
T: ToResolvedValue,
impl<T> ToResolvedValue for ThinVec<T>where
T: ToResolvedValue,
type ResolvedValue = ThinVec<<T as ToResolvedValue>::ResolvedValue>
fn to_resolved_value(self, context: &Context<'_>) -> Self::ResolvedValue
fn from_resolved_value(resolved: Self::ResolvedValue) -> Self
Source§impl<T> ToResolvedValue for Vec<T>where
T: ToResolvedValue,
impl<T> ToResolvedValue for Vec<T>where
T: ToResolvedValue,
type ResolvedValue = Vec<<T as ToResolvedValue>::ResolvedValue>
fn to_resolved_value(self, context: &Context<'_>) -> Self::ResolvedValue
fn from_resolved_value(resolved: Self::ResolvedValue) -> Self
Implementors§
Source§impl ToResolvedValue for AbsoluteColor
impl ToResolvedValue for AbsoluteColor
Source§impl ToResolvedValue for AlignFlags
impl ToResolvedValue for AlignFlags
type ResolvedValue = AlignFlags
Source§impl ToResolvedValue for AnchorNameIdent
impl ToResolvedValue for AnchorNameIdent
Source§impl ToResolvedValue for Angle
impl ToResolvedValue for Angle
type ResolvedValue = Angle
Source§impl ToResolvedValue for AngleOrPercentagewhere
Percentage: ToResolvedValue<ResolvedValue = Percentage>,
Angle: ToResolvedValue<ResolvedValue = Angle>,
impl ToResolvedValue for AngleOrPercentagewhere
Percentage: ToResolvedValue<ResolvedValue = Percentage>,
Angle: ToResolvedValue<ResolvedValue = Angle>,
Source§impl ToResolvedValue for AnimationDuration
impl ToResolvedValue for AnimationDuration
Source§impl ToResolvedValue for AnimationName
impl ToResolvedValue for AnimationName
Source§impl ToResolvedValue for Appearance
impl ToResolvedValue for Appearance
type ResolvedValue = Appearance
Source§impl ToResolvedValue for ArcSize
impl ToResolvedValue for ArcSize
type ResolvedValue = ArcSize
Source§impl ToResolvedValue for ArcSweep
impl ToResolvedValue for ArcSweep
type ResolvedValue = ArcSweep
Source§impl ToResolvedValue for Atom
impl ToResolvedValue for Atom
type ResolvedValue = Atom<AtomStaticSet>
Source§impl ToResolvedValue for AtomIdent
impl ToResolvedValue for AtomIdent
Source§impl ToResolvedValue for AtomString
impl ToResolvedValue for AtomString
type ResolvedValue = AtomString
Source§impl ToResolvedValue for Attrwhere
Prefix: ToResolvedValue<ResolvedValue = Prefix>,
Namespace: ToResolvedValue<ResolvedValue = Namespace>,
Atom: ToResolvedValue<ResolvedValue = Atom>,
AtomString: ToResolvedValue<ResolvedValue = AtomString>,
impl ToResolvedValue for Attrwhere
Prefix: ToResolvedValue<ResolvedValue = Prefix>,
Namespace: ToResolvedValue<ResolvedValue = Namespace>,
Atom: ToResolvedValue<ResolvedValue = Atom>,
AtomString: ToResolvedValue<ResolvedValue = AtomString>,
type ResolvedValue = Attr
Source§impl ToResolvedValue for Au
impl ToResolvedValue for Au
Source§impl ToResolvedValue for BackgroundRepeat
impl ToResolvedValue for BackgroundRepeat
Source§impl ToResolvedValue for BaselineSource
impl ToResolvedValue for BaselineSource
Source§impl ToResolvedValue for BoolInteger
impl ToResolvedValue for BoolInteger
type ResolvedValue = BoolInteger
Source§impl ToResolvedValue for BorderImageRepeat
impl ToResolvedValue for BorderImageRepeat
Source§impl ToResolvedValue for BorderSideWidth
impl ToResolvedValue for BorderSideWidth
Source§impl ToResolvedValue for BorderStyle
impl ToResolvedValue for BorderStyle
type ResolvedValue = BorderStyle
Source§impl ToResolvedValue for BreakBetween
impl ToResolvedValue for BreakBetween
type ResolvedValue = BreakBetween
Source§impl ToResolvedValue for BreakWithin
impl ToResolvedValue for BreakWithin
type ResolvedValue = BreakWithin
Source§impl ToResolvedValue for CSSPixelLength
impl ToResolvedValue for CSSPixelLength
Source§impl ToResolvedValue for CalcLengthPercentagewhere
AllowedNumericType: ToResolvedValue<ResolvedValue = AllowedNumericType>,
CalcNode: ToResolvedValue<ResolvedValue = CalcNode>,
impl ToResolvedValue for CalcLengthPercentagewhere
AllowedNumericType: ToResolvedValue<ResolvedValue = AllowedNumericType>,
CalcNode: ToResolvedValue<ResolvedValue = CalcNode>,
Source§impl ToResolvedValue for CalcLengthPercentageLeafwhere
Length: ToResolvedValue<ResolvedValue = Length>,
Percentage: ToResolvedValue<ResolvedValue = Percentage>,
f32: ToResolvedValue<ResolvedValue = f32>,
impl ToResolvedValue for CalcLengthPercentageLeafwhere
Length: ToResolvedValue<ResolvedValue = Length>,
Percentage: ToResolvedValue<ResolvedValue = Percentage>,
f32: ToResolvedValue<ResolvedValue = f32>,
Source§impl ToResolvedValue for CaptionSide
impl ToResolvedValue for CaptionSide
type ResolvedValue = CaptionSide
Source§impl ToResolvedValue for CaretColor
impl ToResolvedValue for CaretColor
Source§impl ToResolvedValue for CascadeLevel
impl ToResolvedValue for CascadeLevel
type ResolvedValue = CascadeLevel
Source§impl ToResolvedValue for CascadeOrigin
impl ToResolvedValue for CascadeOrigin
Source§impl ToResolvedValue for Clear
impl ToResolvedValue for Clear
type ResolvedValue = Clear
Source§impl ToResolvedValue for Color
impl ToResolvedValue for Color
Source§impl ToResolvedValue for ColorInterpolationMethodwhere
ColorSpace: ToResolvedValue<ResolvedValue = ColorSpace>,
HueInterpolationMethod: ToResolvedValue<ResolvedValue = HueInterpolationMethod>,
impl ToResolvedValue for ColorInterpolationMethodwhere
ColorSpace: ToResolvedValue<ResolvedValue = ColorSpace>,
HueInterpolationMethod: ToResolvedValue<ResolvedValue = HueInterpolationMethod>,
Source§impl ToResolvedValue for ColorMixFlags
impl ToResolvedValue for ColorMixFlags
Source§impl ToResolvedValue for ColorSchemewhere
ArcSlice<CustomIdent>: ToResolvedValue<ResolvedValue = ArcSlice<CustomIdent>>,
ColorSchemeFlags: ToResolvedValue<ResolvedValue = ColorSchemeFlags>,
impl ToResolvedValue for ColorSchemewhere
ArcSlice<CustomIdent>: ToResolvedValue<ResolvedValue = ArcSlice<CustomIdent>>,
ColorSchemeFlags: ToResolvedValue<ResolvedValue = ColorSchemeFlags>,
type ResolvedValue = ColorScheme
Source§impl ToResolvedValue for ColorSchemeFlags
impl ToResolvedValue for ColorSchemeFlags
Source§impl ToResolvedValue for ColorSpace
impl ToResolvedValue for ColorSpace
type ResolvedValue = ColorSpace
Source§impl ToResolvedValue for ComputedList
impl ToResolvedValue for ComputedList
Source§impl ToResolvedValue for ComputedUrl
impl ToResolvedValue for ComputedUrl
type ResolvedValue = ComputedUrl
Source§impl ToResolvedValue for Contain
impl ToResolvedValue for Contain
type ResolvedValue = Contain
Source§impl ToResolvedValue for ContainerName
impl ToResolvedValue for ContainerName
Source§impl ToResolvedValue for ContainerType
impl ToResolvedValue for ContainerType
Source§impl ToResolvedValue for Content
https://drafts.csswg.org/css-content/#content-property
impl ToResolvedValue for Content
https://drafts.csswg.org/css-content/#content-property
We implement this at resolved value time because otherwise it causes us to allocate a bunch of useless initial structs for all ::before / ::after, which is a bit unfortunate.
Though these should be temporary, mostly, so if this causes complexity in
other places, it should be fine to move to StyleAdjuster.
See https://github.com/w3c/csswg-drafts/issues/4632 for where some related issues are being discussed.