Coverage Report

Created: 2026-03-31 07:09

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/rust/registry/src/index.crates.io-1949cf8c6b5b557f/semver-1.0.27/src/serde.rs
Line
Count
Source
1
use crate::{Comparator, Version, VersionReq};
2
use core::fmt;
3
use serde::de::{Deserialize, Deserializer, Error, Visitor};
4
use serde::ser::{Serialize, Serializer};
5
6
impl Serialize for Version {
7
0
    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
8
0
    where
9
0
        S: Serializer,
10
    {
11
0
        serializer.collect_str(self)
12
0
    }
13
}
14
15
impl Serialize for VersionReq {
16
0
    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
17
0
    where
18
0
        S: Serializer,
19
    {
20
0
        serializer.collect_str(self)
21
0
    }
22
}
23
24
impl Serialize for Comparator {
25
0
    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
26
0
    where
27
0
        S: Serializer,
28
    {
29
0
        serializer.collect_str(self)
30
0
    }
31
}
32
33
impl<'de> Deserialize<'de> for Version {
34
0
    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
35
0
    where
36
0
        D: Deserializer<'de>,
37
    {
38
        struct VersionVisitor;
39
40
        impl<'de> Visitor<'de> for VersionVisitor {
41
            type Value = Version;
42
43
0
            fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
44
0
                formatter.write_str("semver version")
45
0
            }
46
47
0
            fn visit_str<E>(self, string: &str) -> Result<Self::Value, E>
48
0
            where
49
0
                E: Error,
50
            {
51
0
                string.parse().map_err(Error::custom)
52
0
            }
53
        }
54
55
0
        deserializer.deserialize_str(VersionVisitor)
56
0
    }
57
}
58
59
impl<'de> Deserialize<'de> for VersionReq {
60
0
    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
61
0
    where
62
0
        D: Deserializer<'de>,
63
    {
64
        struct VersionReqVisitor;
65
66
        impl<'de> Visitor<'de> for VersionReqVisitor {
67
            type Value = VersionReq;
68
69
0
            fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
70
0
                formatter.write_str("semver version")
71
0
            }
72
73
0
            fn visit_str<E>(self, string: &str) -> Result<Self::Value, E>
74
0
            where
75
0
                E: Error,
76
            {
77
0
                string.parse().map_err(Error::custom)
78
0
            }
79
        }
80
81
0
        deserializer.deserialize_str(VersionReqVisitor)
82
0
    }
83
}
84
85
impl<'de> Deserialize<'de> for Comparator {
86
0
    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
87
0
    where
88
0
        D: Deserializer<'de>,
89
    {
90
        struct ComparatorVisitor;
91
92
        impl<'de> Visitor<'de> for ComparatorVisitor {
93
            type Value = Comparator;
94
95
0
            fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
96
0
                formatter.write_str("semver comparator")
97
0
            }
98
99
0
            fn visit_str<E>(self, string: &str) -> Result<Self::Value, E>
100
0
            where
101
0
                E: Error,
102
            {
103
0
                string.parse().map_err(Error::custom)
104
0
            }
105
        }
106
107
0
        deserializer.deserialize_str(ComparatorVisitor)
108
0
    }
109
}