Enum bson::UuidRepresentation
source · #[non_exhaustive]
pub enum UuidRepresentation {
Standard,
CSharpLegacy,
JavaLegacy,
PythonLegacy,
}
Expand description
Enum of the possible representations to use when converting between Uuid
and Binary
.
This enum is necessary because the different drivers used to have different ways of encoding
UUIDs, with the BSON subtype: 0x03 (UUID old).
If a UUID has been serialized with a particular representation, it MUST
be deserialized with the same representation.
Example:
use bson::{Binary, uuid::{Uuid, UuidRepresentation}};
let uuid = Uuid::parse_str("00112233445566778899AABBCCDDEEFF")?;
let bin = Binary::from_uuid_with_representation(uuid, UuidRepresentation::PythonLegacy);
// This conversion fails, since the binary holds a PythonLegacy UUID, so we're required to specify
// that.
assert!(bin.to_uuid().is_err());
// This conversion succeeds, since we specified the correct representation.
let new_uuid = bin.to_uuid_with_representation(UuidRepresentation::PythonLegacy)?;
assert_eq!(new_uuid, uuid);
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
Standard
The canonical representation of UUIDs in BSON (binary with subtype 0x04)
CSharpLegacy
The legacy representation of UUIDs in BSON used by the C# driver (binary subtype 0x03)
JavaLegacy
The legacy representation of UUIDs in BSON used by the Java driver (binary subtype 0x03)
PythonLegacy
The legacy representation of UUIDs in BSON used by the Python driver, which is the same format as STANDARD, but has binary subtype 0x03
Trait Implementations§
source§impl Clone for UuidRepresentation
impl Clone for UuidRepresentation
source§fn clone(&self) -> UuidRepresentation
fn clone(&self) -> UuidRepresentation
Returns a copy of the value. Read more
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moresource§impl Debug for UuidRepresentation
impl Debug for UuidRepresentation
source§impl PartialEq<UuidRepresentation> for UuidRepresentation
impl PartialEq<UuidRepresentation> for UuidRepresentation
source§fn eq(&self, other: &UuidRepresentation) -> bool
fn eq(&self, other: &UuidRepresentation) -> bool
This method tests for
self
and other
values to be equal, and is used
by ==
.