@@ -13,18 +13,13 @@ use serde::{Deserialize, Deserializer, Serialize, Serializer};
1313
1414const OPAQUE : f32 = 1.0 ;
1515
16- // This impl should only live in this module and should not be `pub`. We don't
17- // want any other Option<T> to serialize to "none".
18- impl < ' a , T : ToCss > ToCss for Option < T > {
19- fn to_css < W > ( & self , dest : & mut W ) -> fmt:: Result
20- where
21- W : fmt:: Write ,
22- {
23- if let Some ( v) = self {
24- ToCss :: to_css ( v, dest)
25- } else {
26- dest. write_str ( "none" )
27- }
16+ fn serialize_none_or < T > ( dest : & mut impl fmt:: Write , value : & Option < T > ) -> fmt:: Result
17+ where
18+ T : ToCss ,
19+ {
20+ match value {
21+ Some ( v) => v. to_css ( dest) ,
22+ None => dest. write_str ( "none" ) ,
2823 }
2924}
3025
@@ -415,11 +410,11 @@ macro_rules! impl_lab_like {
415410 {
416411 dest. write_str( $fname) ?;
417412 dest. write_str( "(" ) ?;
418- self . lightness. to_css ( dest ) ?;
413+ serialize_none_or ( dest , & self . lightness) ?;
419414 dest. write_char( ' ' ) ?;
420- self . a. to_css ( dest ) ?;
415+ serialize_none_or ( dest , & self . a) ?;
421416 dest. write_char( ' ' ) ?;
422- self . b. to_css ( dest ) ?;
417+ serialize_none_or ( dest , & self . b) ?;
423418 serialize_alpha( dest, self . alpha, false ) ?;
424419 dest. write_char( ')' )
425420 }
@@ -508,11 +503,11 @@ macro_rules! impl_lch_like {
508503 {
509504 dest. write_str( $fname) ?;
510505 dest. write_str( "(" ) ?;
511- self . lightness. to_css ( dest ) ?;
506+ serialize_none_or ( dest , & self . lightness) ?;
512507 dest. write_char( ' ' ) ?;
513- self . chroma. to_css ( dest ) ?;
508+ serialize_none_or ( dest , & self . chroma) ?;
514509 dest. write_char( ' ' ) ?;
515- self . hue. to_css ( dest ) ?;
510+ serialize_none_or ( dest , & self . hue) ?;
516511 serialize_alpha( dest, self . alpha, false ) ?;
517512 dest. write_char( ')' )
518513 }
@@ -633,11 +628,11 @@ impl ToCss for ColorFunction {
633628 dest. write_str ( "color(" ) ?;
634629 self . color_space . to_css ( dest) ?;
635630 dest. write_char ( ' ' ) ?;
636- self . c1 . to_css ( dest ) ?;
631+ serialize_none_or ( dest , & self . c1 ) ?;
637632 dest. write_char ( ' ' ) ?;
638- self . c2 . to_css ( dest ) ?;
633+ serialize_none_or ( dest , & self . c2 ) ?;
639634 dest. write_char ( ' ' ) ?;
640- self . c3 . to_css ( dest ) ?;
635+ serialize_none_or ( dest , & self . c3 ) ?;
641636
642637 serialize_alpha ( dest, self . alpha , false ) ?;
643638
0 commit comments