Coverage Report

Created: 2026-08-14 07:34

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/rust/registry/src/index.crates.io-1949cf8c6b5b557f/uuid-0.8.2/src/adapter/compact.rs
Line
Count
Source
1
//! Module for use with `#[serde(with = "...")]` to serialize a [`Uuid`]
2
//! as a `[u8; 16]`.
3
//!
4
//! [`Uuid`]: ../../struct.Uuid.html
5
6
/// Serializer for a [`Uuid`] into a `[u8; 16]`
7
///
8
/// [`Uuid`]: ../../struct.Uuid.html
9
0
pub fn serialize<S>(u: &crate::Uuid, serializer: S) -> Result<S::Ok, S::Error>
10
0
where
11
0
    S: serde::Serializer,
12
{
13
0
    serde::Serialize::serialize(u.as_bytes(), serializer)
14
0
}
15
16
/// Deserializer from a `[u8; 16]` into a [`Uuid`]
17
///
18
/// [`Uuid`]: ../../struct.Uuid.html
19
0
pub fn deserialize<'de, D>(deserializer: D) -> Result<crate::Uuid, D::Error>
20
0
where
21
0
    D: serde::Deserializer<'de>,
22
{
23
0
    let bytes: [u8; 16] = serde::Deserialize::deserialize(deserializer)?;
24
25
0
    Ok(crate::Uuid::from_bytes(bytes))
26
0
}
27
28
#[cfg(test)]
29
mod tests {
30
31
    use serde_test;
32
33
    #[test]
34
    fn test_serialize_compact() {
35
        #[derive(
36
            serde_derive::Serialize, Debug, serde_derive::Deserialize, PartialEq,
37
        )]
38
        struct UuidContainer {
39
            #[serde(with = "super")]
40
            u: crate::Uuid,
41
        }
42
        use serde_test::Configure;
43
44
        let uuid_bytes = b"F9168C5E-CEB2-4F";
45
        let container = UuidContainer {
46
            u: crate::Uuid::from_slice(uuid_bytes).unwrap(),
47
        };
48
49
        // more complex because of the struct wrapping the actual UUID
50
        // serialization
51
        serde_test::assert_tokens(
52
            &container.compact(),
53
            &[
54
                serde_test::Token::Struct {
55
                    name: "UuidContainer",
56
                    len: 1,
57
                },
58
                serde_test::Token::Str("u"),
59
                serde_test::Token::Tuple { len: 16 },
60
                serde_test::Token::U8(uuid_bytes[0]),
61
                serde_test::Token::U8(uuid_bytes[1]),
62
                serde_test::Token::U8(uuid_bytes[2]),
63
                serde_test::Token::U8(uuid_bytes[3]),
64
                serde_test::Token::U8(uuid_bytes[4]),
65
                serde_test::Token::U8(uuid_bytes[5]),
66
                serde_test::Token::U8(uuid_bytes[6]),
67
                serde_test::Token::U8(uuid_bytes[7]),
68
                serde_test::Token::U8(uuid_bytes[8]),
69
                serde_test::Token::U8(uuid_bytes[9]),
70
                serde_test::Token::U8(uuid_bytes[10]),
71
                serde_test::Token::U8(uuid_bytes[11]),
72
                serde_test::Token::U8(uuid_bytes[12]),
73
                serde_test::Token::U8(uuid_bytes[13]),
74
                serde_test::Token::U8(uuid_bytes[14]),
75
                serde_test::Token::U8(uuid_bytes[15]),
76
                serde_test::Token::TupleEnd,
77
                serde_test::Token::StructEnd,
78
            ],
79
        )
80
    }
81
}