@@ -408,6 +408,78 @@ where
408
408
}
409
409
}
410
410
411
+ // endregion
412
+ ///////////////////////////////////////////////////////////////////////////////
413
+ // region: More complex wrappers that are not just a single value
414
+
415
+ impl < ' de , Idx , IdxAs > DeserializeAs < ' de , Range < Idx > > for Range < IdxAs >
416
+ where
417
+ IdxAs : DeserializeAs < ' de , Idx > ,
418
+ {
419
+ fn deserialize_as < D > ( deserializer : D ) -> Result < Range < Idx > , D :: Error >
420
+ where
421
+ D : Deserializer < ' de > ,
422
+ {
423
+ let Range :: < DeserializeAsWrap < Idx , IdxAs > > { start, end } =
424
+ Deserialize :: deserialize ( deserializer) ?;
425
+
426
+ Ok ( Range {
427
+ start : start. into_inner ( ) ,
428
+ end : end. into_inner ( ) ,
429
+ } )
430
+ }
431
+ }
432
+
433
+ impl < ' de , Idx , IdxAs > DeserializeAs < ' de , RangeFrom < Idx > > for RangeFrom < IdxAs >
434
+ where
435
+ IdxAs : DeserializeAs < ' de , Idx > ,
436
+ {
437
+ fn deserialize_as < D > ( deserializer : D ) -> Result < RangeFrom < Idx > , D :: Error >
438
+ where
439
+ D : Deserializer < ' de > ,
440
+ {
441
+ let RangeFrom :: < DeserializeAsWrap < Idx , IdxAs > > { start } =
442
+ Deserialize :: deserialize ( deserializer) ?;
443
+
444
+ Ok ( RangeFrom {
445
+ start : start. into_inner ( ) ,
446
+ } )
447
+ }
448
+ }
449
+
450
+ impl < ' de , Idx , IdxAs > DeserializeAs < ' de , RangeInclusive < Idx > > for RangeInclusive < IdxAs >
451
+ where
452
+ IdxAs : DeserializeAs < ' de , Idx > ,
453
+ {
454
+ fn deserialize_as < D > ( deserializer : D ) -> Result < RangeInclusive < Idx > , D :: Error >
455
+ where
456
+ D : Deserializer < ' de > ,
457
+ {
458
+ let ( start, end) =
459
+ RangeInclusive :: < DeserializeAsWrap < Idx , IdxAs > > :: deserialize ( deserializer) ?
460
+ . into_inner ( ) ;
461
+
462
+ Ok ( RangeInclusive :: new ( start. into_inner ( ) , end. into_inner ( ) ) )
463
+ }
464
+ }
465
+
466
+ impl < ' de , Idx , IdxAs > DeserializeAs < ' de , RangeTo < Idx > > for RangeTo < IdxAs >
467
+ where
468
+ IdxAs : DeserializeAs < ' de , Idx > ,
469
+ {
470
+ fn deserialize_as < D > ( deserializer : D ) -> Result < RangeTo < Idx > , D :: Error >
471
+ where
472
+ D : Deserializer < ' de > ,
473
+ {
474
+ let RangeTo :: < DeserializeAsWrap < Idx , IdxAs > > { end } =
475
+ Deserialize :: deserialize ( deserializer) ?;
476
+
477
+ Ok ( RangeTo {
478
+ end : end. into_inner ( ) ,
479
+ } )
480
+ }
481
+ }
482
+
411
483
// endregion
412
484
///////////////////////////////////////////////////////////////////////////////
413
485
// region: Collection Types (e.g., Maps, Sets, Vec)
0 commit comments