Coverage Report

Created: 2026-03-11 07:34

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/rust/registry/src/index.crates.io-1949cf8c6b5b557f/revision-0.17.0/src/implementations/arc.rs
Line
Count
Source
1
use crate::DeserializeRevisioned;
2
use crate::SerializeRevisioned;
3
4
use super::super::Error;
5
use super::super::Revisioned;
6
use std::sync::Arc;
7
8
impl<T> SerializeRevisioned for Arc<T>
9
where
10
  T: SerializeRevisioned,
11
{
12
  #[inline]
13
0
  fn serialize_revisioned<W: std::io::Write>(&self, writer: &mut W) -> Result<(), Error> {
14
0
    self.as_ref().serialize_revisioned(writer)
15
0
  }
Unexecuted instantiation: <alloc::sync::Arc<surrealdb_core::val::Value> as revision::SerializeRevisioned>::serialize_revisioned::<alloc::vec::Vec<u8>>
Unexecuted instantiation: <alloc::sync::Arc<surrealdb_core::iam::auth::Auth> as revision::SerializeRevisioned>::serialize_revisioned::<alloc::vec::Vec<u8>>
Unexecuted instantiation: <alloc::sync::Arc<surrealdb_core::val::record_id::RecordIdKey> as revision::SerializeRevisioned>::serialize_revisioned::<alloc::vec::Vec<u8>>
Unexecuted instantiation: <alloc::sync::Arc<surrealdb_core::val::record_id::RecordId> as revision::SerializeRevisioned>::serialize_revisioned::<alloc::vec::Vec<u8>>
Unexecuted instantiation: <alloc::sync::Arc<surrealdb_core::catalog::record::Record> as revision::SerializeRevisioned>::serialize_revisioned::<alloc::vec::Vec<u8>>
Unexecuted instantiation: <alloc::sync::Arc<_> as revision::SerializeRevisioned>::serialize_revisioned::<_>
16
}
17
18
impl<T> DeserializeRevisioned for Arc<T>
19
where
20
  T: DeserializeRevisioned,
21
{
22
  #[inline]
23
0
  fn deserialize_revisioned<R: std::io::Read>(reader: &mut R) -> Result<Self, Error> {
24
0
    Ok(Arc::new(T::deserialize_revisioned(reader)?))
25
0
  }
Unexecuted instantiation: <alloc::sync::Arc<surrealdb_core::val::record_id::RecordIdKey> as revision::DeserializeRevisioned>::deserialize_revisioned::<&[u8]>
Unexecuted instantiation: <alloc::sync::Arc<_> as revision::DeserializeRevisioned>::deserialize_revisioned::<_>
26
}
27
28
impl<T> Revisioned for Arc<T>
29
where
30
  T: Revisioned,
31
{
32
  #[inline]
33
0
  fn revision() -> u16 {
34
0
    1
35
0
  }
36
}
37
38
// Specialized implementations for Arc<str>
39
impl SerializeRevisioned for Arc<str> {
40
  #[inline]
41
0
  fn serialize_revisioned<W: std::io::Write>(&self, writer: &mut W) -> Result<(), Error> {
42
0
    self.as_ref().serialize_revisioned(writer)
43
0
  }
Unexecuted instantiation: <alloc::sync::Arc<str> as revision::SerializeRevisioned>::serialize_revisioned::<alloc::vec::Vec<u8>>
Unexecuted instantiation: <alloc::sync::Arc<str> as revision::SerializeRevisioned>::serialize_revisioned::<_>
44
}
45
46
impl DeserializeRevisioned for Arc<str> {
47
  #[inline]
48
0
  fn deserialize_revisioned<R: std::io::Read>(reader: &mut R) -> Result<Self, Error> {
49
0
    String::deserialize_revisioned(reader).map(Arc::from)
50
0
  }
51
}
52
53
impl Revisioned for Arc<str> {
54
  #[inline]
55
0
  fn revision() -> u16 {
56
0
    1
57
0
  }
58
}
59
60
#[cfg(test)]
61
mod tests {
62
63
  use super::*;
64
65
  #[test]
66
  fn test_arc() {
67
    let val = Arc::new(u32::MAX);
68
    let mut mem: Vec<u8> = vec![];
69
    val.serialize_revisioned(&mut mem).unwrap();
70
    #[cfg(not(feature = "fixed-width-encoding"))]
71
    assert_eq!(mem.len(), 5);
72
    #[cfg(feature = "fixed-width-encoding")]
73
    assert_eq!(mem.len(), 4);
74
    let out = DeserializeRevisioned::deserialize_revisioned(&mut mem.as_slice()).unwrap();
75
    assert_eq!(val, out);
76
  }
77
78
  #[test]
79
  fn test_arc_str() {
80
    let val: Arc<str> = Arc::from("hello world");
81
    let mut mem: Vec<u8> = vec![];
82
    val.serialize_revisioned(&mut mem).unwrap();
83
    #[cfg(not(feature = "fixed-width-encoding"))]
84
    assert_eq!(mem.len(), 12); // 11 chars + 1 byte for length encoding
85
    #[cfg(feature = "fixed-width-encoding")]
86
    assert_eq!(mem.len(), 19); // 11 chars + 8 bytes for length encoding
87
    let out: Arc<str> =
88
      <Arc<str> as DeserializeRevisioned>::deserialize_revisioned(&mut mem.as_slice())
89
        .unwrap();
90
    assert_eq!(val, out);
91
  }
92
}