@@ -13,18 +13,13 @@ use serde::{Deserialize, Deserializer, Serialize, Serializer};
13
13
14
14
const OPAQUE : f32 = 1.0 ;
15
15
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" ) ,
28
23
}
29
24
}
30
25
@@ -415,11 +410,11 @@ macro_rules! impl_lab_like {
415
410
{
416
411
dest. write_str( $fname) ?;
417
412
dest. write_str( "(" ) ?;
418
- self . lightness. to_css ( dest ) ?;
413
+ serialize_none_or ( dest , & self . lightness) ?;
419
414
dest. write_char( ' ' ) ?;
420
- self . a. to_css ( dest ) ?;
415
+ serialize_none_or ( dest , & self . a) ?;
421
416
dest. write_char( ' ' ) ?;
422
- self . b. to_css ( dest ) ?;
417
+ serialize_none_or ( dest , & self . b) ?;
423
418
serialize_alpha( dest, self . alpha, false ) ?;
424
419
dest. write_char( ')' )
425
420
}
@@ -508,11 +503,11 @@ macro_rules! impl_lch_like {
508
503
{
509
504
dest. write_str( $fname) ?;
510
505
dest. write_str( "(" ) ?;
511
- self . lightness. to_css ( dest ) ?;
506
+ serialize_none_or ( dest , & self . lightness) ?;
512
507
dest. write_char( ' ' ) ?;
513
- self . chroma. to_css ( dest ) ?;
508
+ serialize_none_or ( dest , & self . chroma) ?;
514
509
dest. write_char( ' ' ) ?;
515
- self . hue. to_css ( dest ) ?;
510
+ serialize_none_or ( dest , & self . hue) ?;
516
511
serialize_alpha( dest, self . alpha, false ) ?;
517
512
dest. write_char( ')' )
518
513
}
@@ -633,11 +628,11 @@ impl ToCss for ColorFunction {
633
628
dest. write_str ( "color(" ) ?;
634
629
self . color_space . to_css ( dest) ?;
635
630
dest. write_char ( ' ' ) ?;
636
- self . c1 . to_css ( dest ) ?;
631
+ serialize_none_or ( dest , & self . c1 ) ?;
637
632
dest. write_char ( ' ' ) ?;
638
- self . c2 . to_css ( dest ) ?;
633
+ serialize_none_or ( dest , & self . c2 ) ?;
639
634
dest. write_char ( ' ' ) ?;
640
- self . c3 . to_css ( dest ) ?;
635
+ serialize_none_or ( dest , & self . c3 ) ?;
641
636
642
637
serialize_alpha ( dest, self . alpha , false ) ?;
643
638
0 commit comments