Generalize LengthPercentageOrAuto impl to Generic Type (#30824)

* Generalize LengthPercentageOrAuto impl to Generic Type

* review fix
This commit is contained in:
atbrakhi 2023-12-06 11:20:43 +01:00 committed by GitHub
parent a326a60c16
commit 9028c90332
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -68,13 +68,13 @@ impl<LengthPercentage> LengthPercentageOrAuto<LengthPercentage> {
} }
} }
impl<LengthPercentage> LengthPercentageOrAuto<LengthPercentage> impl<T> LengthPercentageOrAuto<T>
where where
LengthPercentage: Clone, T: Clone,
{ {
/// Resolves `auto` values by calling `f`. /// Resolves `auto` values by calling `f`.
#[inline] #[inline]
pub fn auto_is(&self, f: impl FnOnce() -> LengthPercentage) -> LengthPercentage { pub fn auto_is(&self, f: impl FnOnce() -> T) -> T {
match self { match self {
LengthPercentageOrAuto::LengthPercentage(length) => length.clone(), LengthPercentageOrAuto::LengthPercentage(length) => length.clone(),
LengthPercentageOrAuto::Auto => f(), LengthPercentageOrAuto::Auto => f(),
@ -83,7 +83,7 @@ where
/// Returns the non-`auto` value, if any. /// Returns the non-`auto` value, if any.
#[inline] #[inline]
pub fn non_auto(&self) -> Option<LengthPercentage> { pub fn non_auto(&self) -> Option<T> {
match self { match self {
LengthPercentageOrAuto::LengthPercentage(length) => Some(length.clone()), LengthPercentageOrAuto::LengthPercentage(length) => Some(length.clone()),
LengthPercentageOrAuto::Auto => None, LengthPercentageOrAuto::Auto => None,
@ -91,7 +91,7 @@ where
} }
/// Maps the length of this value. /// Maps the length of this value.
pub fn map<T>(&self, f: impl FnOnce(LengthPercentage) -> T) -> LengthPercentageOrAuto<T> { pub fn map<U>(&self, f: impl FnOnce(T) -> U) -> LengthPercentageOrAuto<U> {
match self { match self {
LengthPercentageOrAuto::LengthPercentage(l) => { LengthPercentageOrAuto::LengthPercentage(l) => {
LengthPercentageOrAuto::LengthPercentage(f(l.clone())) LengthPercentageOrAuto::LengthPercentage(f(l.clone()))