@@ -6,31 +6,6 @@ use std::{
6
6
result:: Result ,
7
7
} ;
8
8
9
- #[ cfg( feature = "uuid-1" ) ]
10
- #[ doc( inline) ]
11
- pub use uuid_1_as_binary:: {
12
- deserialize as deserialize_uuid_1_from_binary,
13
- serialize as serialize_uuid_1_as_binary,
14
- } ;
15
- #[ cfg( feature = "uuid-1" ) ]
16
- #[ doc( inline) ]
17
- pub use uuid_1_as_c_sharp_legacy_binary:: {
18
- deserialize as deserialize_uuid_1_from_c_sharp_legacy_binary,
19
- serialize as serialize_uuid_1_as_c_sharp_legacy_binary,
20
- } ;
21
- #[ cfg( feature = "uuid-1" ) ]
22
- #[ doc( inline) ]
23
- pub use uuid_1_as_java_legacy_binary:: {
24
- deserialize as deserialize_uuid_1_from_java_legacy_binary,
25
- serialize as serialize_uuid_1_as_java_legacy_binary,
26
- } ;
27
- #[ cfg( feature = "uuid-1" ) ]
28
- #[ doc( inline) ]
29
- pub use uuid_1_as_python_legacy_binary:: {
30
- deserialize as deserialize_uuid_1_from_python_legacy_binary,
31
- serialize as serialize_uuid_1_as_python_legacy_binary,
32
- } ;
33
-
34
9
/// Type converters for serializing and deserializing [`crate::oid::ObjectId`] using
35
10
/// [`serde_with::serde_as`].
36
11
///
@@ -116,7 +91,6 @@ pub mod datetime {
116
91
use chrono:: Utc ;
117
92
use serde:: { Deserialize , Deserializer , Serialize , Serializer } ;
118
93
use serde_with:: { DeserializeAs , SerializeAs } ;
119
- use std:: result:: Result ;
120
94
121
95
serde_conv_doc ! (
122
96
/// Converts a [`DateTime`] to and from an RFC 3339 (ISO 8601) formatted string.
@@ -270,7 +244,6 @@ pub mod timestamp {
270
244
use crate :: { macros:: serde_conv_doc, Timestamp } ;
271
245
use serde:: { Deserialize , Deserializer , Serialize , Serializer } ;
272
246
use serde_with:: { DeserializeAs , SerializeAs } ;
273
- use std:: result:: Result ;
274
247
275
248
serde_conv_doc ! (
276
249
/// Converts a [`Timestamp`] to and from a `u32`.
@@ -351,7 +324,6 @@ pub mod u32 {
351
324
use crate :: macros:: serde_conv_doc;
352
325
use serde:: { Deserialize , Deserializer , Serialize , Serializer } ;
353
326
use serde_with:: { DeserializeAs , SerializeAs } ;
354
- use std:: result:: Result ;
355
327
356
328
serde_conv_doc ! (
357
329
/// Converts a `u32` to and from an `f64`.
@@ -454,7 +426,6 @@ pub mod u64 {
454
426
use crate :: macros:: serde_conv_doc;
455
427
use serde:: { Deserialize , Deserializer , Serialize , Serializer } ;
456
428
use serde_with:: { DeserializeAs , SerializeAs } ;
457
- use std:: result:: Result ;
458
429
459
430
serde_conv_doc ! (
460
431
/// Converts a `u64` to and from an `f64`.
@@ -550,6 +521,158 @@ pub mod u64 {
550
521
) ;
551
522
}
552
523
524
+ /// Type converters for serializing and deserializing [`uuid::Uuid`] using
525
+ /// [`serde_with::serde_as`].
526
+ ///
527
+ /// ## Available converters
528
+ /// - [`uuid_1::AsBinary`] — serializes a [`uuid::Uuid`] as a [`crate::Binary`].
529
+ /// - [`uuid_1::AsCSharpLegacyBinary`] — serializes a [`uuid::Uuid`] as a [`crate::Binary`] in the
530
+ /// legacy C# driver UUID format.
531
+ /// - [`uuid_1::AsJavaLegacyBinary`] — serializes a [`uuid::Uuid`] as a [`crate::Binary`] in the
532
+ /// legacy Java driver UUID format.
533
+ /// - [`uuid_1::AsPythonLegacyBinary`] — serializes a [`uuid::Uuid`] as a [`crate::Binary`] in the
534
+ /// legacy Python driver UUID format.
535
+ #[ cfg( all( feature = "serde_with-3" , feature = "uuid-1" ) ) ]
536
+ #[ cfg_attr( docsrs, doc( cfg( all( feature = "serde_with-3" , feature = "uuid-1" ) ) ) ) ]
537
+ pub mod uuid_1 {
538
+ use crate :: macros:: serde_conv_doc;
539
+ use serde:: { Deserialize , Deserializer , Serialize , Serializer } ;
540
+ use serde_with:: { DeserializeAs , SerializeAs } ;
541
+ use uuid:: Uuid ;
542
+
543
+ serde_conv_doc ! (
544
+ /// Serializes a [`Uuid`] as a [`crate::Binary`] and deserializes a [`Uuid`] from a [`crate::Binary`].
545
+ /// ```rust
546
+ /// # #[cfg(all(feature = "uuid-1", feature = "serde_with-3"))]
547
+ /// # {
548
+ /// use bson::serde_helpers::uuid_1;
549
+ /// use serde::{Serialize, Deserialize};
550
+ /// use serde_with::serde_as;
551
+ /// use uuid::Uuid;
552
+ /// #[serde_as]
553
+ /// #[derive(Serialize, Deserialize)]
554
+ /// struct Item {
555
+ /// #[serde_as(as = "uuid_1::AsBinary")]
556
+ /// pub id: Uuid,
557
+ /// }
558
+ /// # }
559
+ /// ```
560
+ pub AsBinary ,
561
+ Uuid ,
562
+ |uuid: & Uuid | -> Result <crate :: uuid:: Uuid , String > {
563
+ Ok ( crate :: uuid:: Uuid :: from( * uuid) )
564
+ } ,
565
+ |bson_uuid: crate :: uuid:: Uuid | -> Result <Uuid , String > {
566
+ Ok ( bson_uuid. into( ) )
567
+ }
568
+ ) ;
569
+
570
+ serde_conv_doc ! (
571
+ /// Serializes a [`Uuid`] to a [`crate::Binary`] in the legacy C# driver UUID format and
572
+ /// deserializes [`Uuid`] from a [`crate::Binary`] in the legacy C# driver format.
573
+ /// ```rust
574
+ /// # #[cfg(all(feature = "uuid-1", feature = "serde_with-3"))]
575
+ /// # {
576
+ /// use bson::serde_helpers::uuid_1;
577
+ /// use serde::{Serialize, Deserialize};
578
+ /// use serde_with::serde_as;
579
+ /// use uuid::Uuid;
580
+ /// #[serde_as]
581
+ /// #[derive(Serialize, Deserialize)]
582
+ /// struct Item {
583
+ /// #[serde_as(as = "uuid_1::AsCSharpLegacyBinary")]
584
+ /// pub id: Uuid,
585
+ /// }
586
+ /// # }
587
+ /// ```
588
+ pub AsCSharpLegacyBinary ,
589
+ Uuid ,
590
+ |uuid: & Uuid | -> Result <crate :: Binary , String > {
591
+ let inner = crate :: uuid:: Uuid :: from( * uuid) ;
592
+ Ok ( crate :: Binary :: from_uuid_with_representation(
593
+ inner,
594
+ crate :: uuid:: UuidRepresentation :: CSharpLegacy ,
595
+ ) )
596
+ } ,
597
+ |binary: crate :: Binary | -> Result <Uuid , String > {
598
+ let inner = binary
599
+ . to_uuid_with_representation( crate :: uuid:: UuidRepresentation :: CSharpLegacy )
600
+ . map_err( |e| e. to_string( ) ) ?;
601
+ Ok ( inner. into( ) )
602
+ }
603
+ ) ;
604
+
605
+ serde_conv_doc ! (
606
+ /// Serializes a [`Uuid`] to a [`crate::Binary`] in the legacy Java driver UUID format and
607
+ /// deserializes [`Uuid`] from a [`crate::Binary`] in the legacy Java driver format.
608
+ /// ```rust
609
+ /// # #[cfg(all(feature = "uuid-1", feature = "serde_with-3"))]
610
+ /// # {
611
+ /// use bson::serde_helpers::uuid_1;
612
+ /// use serde::{Serialize, Deserialize};
613
+ /// use serde_with::serde_as;
614
+ /// use uuid::Uuid;
615
+ /// #[serde_as]
616
+ /// #[derive(Serialize, Deserialize)]
617
+ /// struct Item {
618
+ /// #[serde_as(as = "uuid_1::AsJavaLegacyBinary")]
619
+ /// pub id: Uuid,
620
+ /// }
621
+ /// # }
622
+ /// ```
623
+ pub AsJavaLegacyBinary ,
624
+ Uuid ,
625
+ |uuid: & Uuid | -> Result <crate :: Binary , String > {
626
+ let inner = crate :: uuid:: Uuid :: from( * uuid) ;
627
+ Ok ( crate :: Binary :: from_uuid_with_representation(
628
+ inner,
629
+ crate :: uuid:: UuidRepresentation :: JavaLegacy ,
630
+ ) )
631
+ } ,
632
+ |binary: crate :: Binary | -> Result <Uuid , String > {
633
+ let inner = binary
634
+ . to_uuid_with_representation( crate :: uuid:: UuidRepresentation :: JavaLegacy )
635
+ . map_err( |e| e. to_string( ) ) ?;
636
+ Ok ( inner. into( ) )
637
+ }
638
+ ) ;
639
+
640
+ serde_conv_doc ! (
641
+ /// Serializes a [`Uuid`] to a [`crate::Binary`] in the legacy Python driver UUID format and
642
+ /// deserializes [`Uuid`] from a [`crate::Binary`] in the legacy Python driver format.
643
+ /// ```rust
644
+ /// # #[cfg(all(feature = "uuid-1", feature = "serde_with-3"))]
645
+ /// # {
646
+ /// use bson::serde_helpers::uuid_1;
647
+ /// use serde::{Serialize, Deserialize};
648
+ /// use serde_with::serde_as;
649
+ /// use uuid::Uuid;
650
+ /// #[serde_as]
651
+ /// #[derive(Serialize, Deserialize)]
652
+ /// struct Item {
653
+ /// #[serde_as(as = "uuid_1::AsPythonLegacyBinary")]
654
+ /// pub id: Uuid,
655
+ /// }
656
+ /// # }
657
+ /// ```
658
+ pub AsPythonLegacyBinary ,
659
+ Uuid ,
660
+ |uuid: & Uuid | -> Result <crate :: Binary , String > {
661
+ let inner = crate :: uuid:: Uuid :: from( * uuid) ;
662
+ Ok ( crate :: Binary :: from_uuid_with_representation(
663
+ inner,
664
+ crate :: uuid:: UuidRepresentation :: PythonLegacy ,
665
+ ) )
666
+ } ,
667
+ |binary: crate :: Binary | -> Result <Uuid , String > {
668
+ let inner = binary
669
+ . to_uuid_with_representation( crate :: uuid:: UuidRepresentation :: PythonLegacy )
670
+ . map_err( |e| e. to_string( ) ) ?;
671
+ Ok ( inner. into( ) )
672
+ }
673
+ ) ;
674
+ }
675
+
553
676
#[ allow( unused_macros) ]
554
677
macro_rules! as_binary_mod {
555
678
( $feat: meta, $uu: path) => {
@@ -575,29 +698,6 @@ macro_rules! as_binary_mod {
575
698
} ;
576
699
}
577
700
578
- /// Contains functions to serialize a [`uuid::Uuid`] as a [`crate::Binary`] and deserialize a
579
- /// [`uuid::Uuid`] from a [`crate::Binary`].
580
- ///
581
- /// ```rust
582
- /// # #[cfg(feature = "uuid-1")]
583
- /// # {
584
- /// use serde::{Serialize, Deserialize};
585
- /// use uuid::Uuid;
586
- /// use bson::serde_helpers::uuid_1_as_binary;
587
- ///
588
- /// #[derive(Serialize, Deserialize)]
589
- /// struct Item {
590
- /// #[serde(with = "uuid_1_as_binary")]
591
- /// pub id: Uuid,
592
- /// }
593
- /// # }
594
- /// ```
595
- #[ cfg( feature = "uuid-1" ) ]
596
- #[ cfg_attr( docsrs, doc( cfg( feature = "uuid-1" ) ) ) ]
597
- pub mod uuid_1_as_binary {
598
- as_binary_mod ! ( cfg( feature = "uuid-1" ) , uuid:: Uuid ) ;
599
- }
600
-
601
701
#[ allow( unused_macros) ]
602
702
macro_rules! as_legacy_binary_mod {
603
703
( $feat: meta, $uu: path, $rep: path) => {
@@ -628,90 +728,6 @@ macro_rules! as_legacy_binary_mod {
628
728
} ;
629
729
}
630
730
631
- /// Contains functions to serialize a [`uuid::Uuid`] to a [`crate::Binary`] in the legacy
632
- /// Java driver UUID format and deserialize [`uuid::Uuid`] from a [`crate::Binary`] in the legacy
633
- /// Java driver format.
634
- ///
635
- /// ```rust
636
- /// #[cfg(feature = "uuid-1")]
637
- /// # {
638
- /// use serde::{Serialize, Deserialize};
639
- /// use uuid::Uuid;
640
- /// use bson::serde_helpers::uuid_1_as_java_legacy_binary;
641
- ///
642
- /// #[derive(Serialize, Deserialize)]
643
- /// struct Item {
644
- /// #[serde(with = "uuid_1_as_java_legacy_binary")]
645
- /// pub id: Uuid,
646
- /// }
647
- /// # }
648
- /// ```
649
- #[ cfg( feature = "uuid-1" ) ]
650
- #[ cfg_attr( docsrs, doc( cfg( feature = "uuid-1" ) ) ) ]
651
- pub mod uuid_1_as_java_legacy_binary {
652
- as_legacy_binary_mod ! (
653
- cfg( feature = "uuid-1" ) ,
654
- uuid:: Uuid ,
655
- UuidRepresentation :: JavaLegacy
656
- ) ;
657
- }
658
-
659
- /// Contains functions to serialize a [`uuid::Uuid`] to a [`crate::Binary`] in the legacy Python
660
- /// driver UUID format and deserialize [`uuid::Uuid`] from a [`crate::Binary`] in the legacy Python
661
- /// driver format.
662
- ///
663
- /// ```rust
664
- /// # #[cfg(feature = "uuid-1")]
665
- /// # {
666
- /// use serde::{Serialize, Deserialize};
667
- /// use uuid::Uuid;
668
- /// use bson::serde_helpers::uuid_1_as_python_legacy_binary;
669
- ///
670
- /// #[derive(Serialize, Deserialize)]
671
- /// struct Item {
672
- /// #[serde(with = "uuid_1_as_python_legacy_binary")]
673
- /// pub id: Uuid,
674
- /// }
675
- /// # }
676
- /// ```
677
- #[ cfg( feature = "uuid-1" ) ]
678
- #[ cfg_attr( docsrs, doc( cfg( feature = "uuid-1" ) ) ) ]
679
- pub mod uuid_1_as_python_legacy_binary {
680
- as_legacy_binary_mod ! (
681
- cfg( feature = "uuid-1" ) ,
682
- uuid:: Uuid ,
683
- UuidRepresentation :: PythonLegacy
684
- ) ;
685
- }
686
-
687
- /// Contains functions to serialize a [`uuid::Uuid`] to a [`crate::Binary`] in the legacy C# driver
688
- /// UUID format and deserialize [`uuid::Uuid`] from a [`crate::Binary`] in the legacy C# driver
689
- /// format.
690
- ///
691
- /// ```rust
692
- /// # #[cfg(feature = "uuid-1")]
693
- /// # {
694
- /// use serde::{Serialize, Deserialize};
695
- /// use uuid::Uuid;
696
- /// use bson::serde_helpers::uuid_1_as_c_sharp_legacy_binary;
697
- ///
698
- /// #[derive(Serialize, Deserialize)]
699
- /// struct Item {
700
- /// #[serde(with = "uuid_1_as_c_sharp_legacy_binary")]
701
- /// pub id: Uuid,
702
- /// }
703
- /// # }
704
- /// ```
705
- #[ cfg( feature = "uuid-1" ) ]
706
- #[ cfg_attr( docsrs, doc( cfg( feature = "uuid-1" ) ) ) ]
707
- pub mod uuid_1_as_c_sharp_legacy_binary {
708
- as_legacy_binary_mod ! (
709
- cfg( feature = "uuid-1" ) ,
710
- uuid:: Uuid ,
711
- UuidRepresentation :: CSharpLegacy
712
- ) ;
713
- }
714
-
715
731
/// Wrapping a type in `HumanReadable` signals to the BSON serde integration that it and all
716
732
/// recursively contained types should be serialized to and deserialized from their human-readable
717
733
/// formats.
0 commit comments