/rust/registry/src/index.crates.io-1949cf8c6b5b557f/revision-0.17.0/src/implementations/regex.rs
Line | Count | Source |
1 | | #![cfg(feature = "regex")] |
2 | | |
3 | | use super::super::Error; |
4 | | use super::super::{DeserializeRevisioned, Revisioned, SerializeRevisioned}; |
5 | | use super::vecs::serialize_bytes; |
6 | | use regex::Regex; |
7 | | |
8 | | impl SerializeRevisioned for Regex { |
9 | | #[inline] |
10 | 0 | fn serialize_revisioned<W: std::io::Write>(&self, writer: &mut W) -> Result<(), Error> { |
11 | 0 | serialize_bytes(self.as_str().as_bytes(), writer) |
12 | 0 | } Unexecuted instantiation: <regex::regex::string::Regex as revision::SerializeRevisioned>::serialize_revisioned::<alloc::vec::Vec<u8>> Unexecuted instantiation: <regex::regex::string::Regex as revision::SerializeRevisioned>::serialize_revisioned::<_> |
13 | | } |
14 | | |
15 | | impl DeserializeRevisioned for Regex { |
16 | | #[inline] |
17 | 0 | fn deserialize_revisioned<R: std::io::Read>(reader: &mut R) -> Result<Self, Error> { |
18 | 0 | let s = String::deserialize_revisioned(reader)?; |
19 | 0 | s.parse().map_err(|_| Error::Deserialize("invalid regex".to_string()))Unexecuted instantiation: <regex::regex::string::Regex as revision::DeserializeRevisioned>::deserialize_revisioned::<&[u8]>::{closure#0}Unexecuted instantiation: <regex::regex::string::Regex as revision::DeserializeRevisioned>::deserialize_revisioned::<_>::{closure#0} |
20 | 0 | } Unexecuted instantiation: <regex::regex::string::Regex as revision::DeserializeRevisioned>::deserialize_revisioned::<&[u8]> Unexecuted instantiation: <regex::regex::string::Regex as revision::DeserializeRevisioned>::deserialize_revisioned::<_> |
21 | | } |
22 | | |
23 | | impl Revisioned for Regex { |
24 | | #[inline] |
25 | 0 | fn revision() -> u16 { |
26 | 0 | 1 |
27 | 0 | } |
28 | | } |
29 | | |
30 | | #[cfg(test)] |
31 | | mod tests { |
32 | | use super::*; |
33 | | |
34 | | #[test] |
35 | | fn test_regex() { |
36 | | let val = Regex::new("/this ([a-z]+) a tes?/").unwrap(); |
37 | | let mut mem: Vec<u8> = vec![]; |
38 | | val.serialize_revisioned(&mut mem).unwrap(); |
39 | | #[cfg(not(feature = "fixed-width-encoding"))] |
40 | | assert_eq!(mem.len(), 23); |
41 | | #[cfg(feature = "fixed-width-encoding")] |
42 | | assert_eq!(mem.len(), 30); |
43 | | let out = |
44 | | <Regex as DeserializeRevisioned>::deserialize_revisioned(&mut mem.as_slice()).unwrap(); |
45 | | assert_eq!(val.as_str(), out.as_str()); |
46 | | } |
47 | | } |