Coverage Report

Created: 2025-10-10 07:11

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/rust/registry/src/index.crates.io-1949cf8c6b5b557f/revision-0.13.0/src/implementations/option.rs
Line
Count
Source
1
use crate::DeserializeRevisioned;
2
use crate::SerializeRevisioned;
3
4
use super::super::Error;
5
use super::super::Revisioned;
6
7
impl<T> SerializeRevisioned for Option<T>
8
where
9
  T: SerializeRevisioned,
10
{
11
  #[inline]
12
10.4k
  fn serialize_revisioned<W: std::io::Write>(&self, writer: &mut W) -> Result<(), Error> {
13
10.4k
    match self {
14
1.07k
      Some(value) => {
15
1.07k
        1u8.serialize_revisioned(writer)?;
16
1.07k
        value.serialize_revisioned(writer)
17
      }
18
9.41k
      None => 0u8.serialize_revisioned(writer),
19
    }
20
10.4k
  }
Unexecuted instantiation: <core::option::Option<surrealdb_core::val::Value> as revision::SerializeRevisioned>::serialize_revisioned::<alloc::vec::Vec<u8>>
Unexecuted instantiation: <core::option::Option<surrealdb_core::iam::auth::Auth> as revision::SerializeRevisioned>::serialize_revisioned::<alloc::vec::Vec<u8>>
Unexecuted instantiation: <core::option::Option<surrealdb_core::expr::fetch::Fetchs> as revision::SerializeRevisioned>::serialize_revisioned::<alloc::vec::Vec<u8>>
Unexecuted instantiation: <core::option::Option<alloc::vec::Vec<surrealdb_core::val::Value>> as revision::SerializeRevisioned>::serialize_revisioned::<alloc::vec::Vec<u8>>
Unexecuted instantiation: <core::option::Option<alloc::vec::Vec<surrealdb_core::expr::kind::Kind>> as revision::SerializeRevisioned>::serialize_revisioned::<alloc::vec::Vec<u8>>
<core::option::Option<alloc::vec::Vec<surrealdb_core::expr::filter::Filter>> as revision::SerializeRevisioned>::serialize_revisioned::<alloc::vec::Vec<u8>>
Line
Count
Source
12
12
  fn serialize_revisioned<W: std::io::Write>(&self, writer: &mut W) -> Result<(), Error> {
13
12
    match self {
14
11
      Some(value) => {
15
11
        1u8.serialize_revisioned(writer)?;
16
11
        value.serialize_revisioned(writer)
17
      }
18
1
      None => 0u8.serialize_revisioned(writer),
19
    }
20
12
  }
<core::option::Option<alloc::vec::Vec<surrealdb_core::expr::tokenizer::Tokenizer>> as revision::SerializeRevisioned>::serialize_revisioned::<alloc::vec::Vec<u8>>
Line
Count
Source
12
12
  fn serialize_revisioned<W: std::io::Write>(&self, writer: &mut W) -> Result<(), Error> {
13
12
    match self {
14
10
      Some(value) => {
15
10
        1u8.serialize_revisioned(writer)?;
16
10
        value.serialize_revisioned(writer)
17
      }
18
2
      None => 0u8.serialize_revisioned(writer),
19
    }
20
12
  }
Unexecuted instantiation: <core::option::Option<alloc::boxed::Box<surrealdb_core::expr::kind::Kind>> as revision::SerializeRevisioned>::serialize_revisioned::<alloc::vec::Vec<u8>>
<core::option::Option<core::time::Duration> as revision::SerializeRevisioned>::serialize_revisioned::<alloc::vec::Vec<u8>>
Line
Count
Source
12
4
  fn serialize_revisioned<W: std::io::Write>(&self, writer: &mut W) -> Result<(), Error> {
13
4
    match self {
14
2
      Some(value) => {
15
2
        1u8.serialize_revisioned(writer)?;
16
2
        value.serialize_revisioned(writer)
17
      }
18
2
      None => 0u8.serialize_revisioned(writer),
19
    }
20
4
  }
<core::option::Option<alloc::string::String> as revision::SerializeRevisioned>::serialize_revisioned::<alloc::vec::Vec<u8>>
Line
Count
Source
12
947
  fn serialize_revisioned<W: std::io::Write>(&self, writer: &mut W) -> Result<(), Error> {
13
947
    match self {
14
1
      Some(value) => {
15
1
        1u8.serialize_revisioned(writer)?;
16
1
        value.serialize_revisioned(writer)
17
      }
18
946
      None => 0u8.serialize_revisioned(writer),
19
    }
20
947
  }
<core::option::Option<surrealdb_core::val::record::Metadata> as revision::SerializeRevisioned>::serialize_revisioned::<alloc::vec::Vec<u8>>
Line
Count
Source
12
8.36k
  fn serialize_revisioned<W: std::io::Write>(&self, writer: &mut W) -> Result<(), Error> {
13
8.36k
    match self {
14
949
      Some(value) => {
15
949
        1u8.serialize_revisioned(writer)?;
16
949
        value.serialize_revisioned(writer)
17
      }
18
7.41k
      None => 0u8.serialize_revisioned(writer),
19
    }
20
8.36k
  }
Unexecuted instantiation: <core::option::Option<surrealdb_core::val::datetime::Datetime> as revision::SerializeRevisioned>::serialize_revisioned::<alloc::vec::Vec<u8>>
<core::option::Option<surrealdb_core::expr::changefeed::ChangeFeed> as revision::SerializeRevisioned>::serialize_revisioned::<alloc::vec::Vec<u8>>
Line
Count
Source
12
531
  fn serialize_revisioned<W: std::io::Write>(&self, writer: &mut W) -> Result<(), Error> {
13
531
    match self {
14
0
      Some(value) => {
15
0
        1u8.serialize_revisioned(writer)?;
16
0
        value.serialize_revisioned(writer)
17
      }
18
531
      None => 0u8.serialize_revisioned(writer),
19
    }
20
531
  }
<core::option::Option<surrealdb_core::expr::expression::Expr> as revision::SerializeRevisioned>::serialize_revisioned::<alloc::vec::Vec<u8>>
Line
Count
Source
12
210
  fn serialize_revisioned<W: std::io::Write>(&self, writer: &mut W) -> Result<(), Error> {
13
210
    match self {
14
35
      Some(value) => {
15
35
        1u8.serialize_revisioned(writer)?;
16
35
        value.serialize_revisioned(writer)
17
      }
18
175
      None => 0u8.serialize_revisioned(writer),
19
    }
20
210
  }
Unexecuted instantiation: <core::option::Option<surrealdb_core::expr::cond::Cond> as revision::SerializeRevisioned>::serialize_revisioned::<alloc::vec::Vec<u8>>
<core::option::Option<surrealdb_core::expr::kind::Kind> as revision::SerializeRevisioned>::serialize_revisioned::<alloc::vec::Vec<u8>>
Line
Count
Source
12
70
  fn serialize_revisioned<W: std::io::Write>(&self, writer: &mut W) -> Result<(), Error> {
13
70
    match self {
14
68
      Some(value) => {
15
68
        1u8.serialize_revisioned(writer)?;
16
68
        value.serialize_revisioned(writer)
17
      }
18
2
      None => 0u8.serialize_revisioned(writer),
19
    }
20
70
  }
Unexecuted instantiation: <core::option::Option<surrealdb_core::expr::group::Groups> as revision::SerializeRevisioned>::serialize_revisioned::<alloc::vec::Vec<u8>>
Unexecuted instantiation: <core::option::Option<surrealdb_core::expr::idiom::Idiom> as revision::SerializeRevisioned>::serialize_revisioned::<alloc::vec::Vec<u8>>
<core::option::Option<surrealdb_core::expr::reference::Reference> as revision::SerializeRevisioned>::serialize_revisioned::<alloc::vec::Vec<u8>>
Line
Count
Source
12
70
  fn serialize_revisioned<W: std::io::Write>(&self, writer: &mut W) -> Result<(), Error> {
13
70
    match self {
14
0
      Some(value) => {
15
0
        1u8.serialize_revisioned(writer)?;
16
0
        value.serialize_revisioned(writer)
17
      }
18
70
      None => 0u8.serialize_revisioned(writer),
19
    }
20
70
  }
<core::option::Option<surrealdb_core::catalog::view::ViewDefinition> as revision::SerializeRevisioned>::serialize_revisioned::<alloc::vec::Vec<u8>>
Line
Count
Source
12
253
  fn serialize_revisioned<W: std::io::Write>(&self, writer: &mut W) -> Result<(), Error> {
13
253
    match self {
14
0
      Some(value) => {
15
0
        1u8.serialize_revisioned(writer)?;
16
0
        value.serialize_revisioned(writer)
17
      }
18
253
      None => 0u8.serialize_revisioned(writer),
19
    }
20
253
  }
Unexecuted instantiation: <core::option::Option<surrealdb_core::catalog::schema::access::BearerAccess> as revision::SerializeRevisioned>::serialize_revisioned::<alloc::vec::Vec<u8>>
Unexecuted instantiation: <core::option::Option<surrealdb_core::catalog::schema::access::JwtAccessIssue> as revision::SerializeRevisioned>::serialize_revisioned::<alloc::vec::Vec<u8>>
Unexecuted instantiation: <core::option::Option<surrealdb_core::catalog::schema::bucket::BucketId> as revision::SerializeRevisioned>::serialize_revisioned::<alloc::vec::Vec<u8>>
<core::option::Option<u64> as revision::SerializeRevisioned>::serialize_revisioned::<alloc::vec::Vec<u8>>
Line
Count
Source
12
15
  fn serialize_revisioned<W: std::io::Write>(&self, writer: &mut W) -> Result<(), Error> {
13
15
    match self {
14
3
      Some(value) => {
15
3
        1u8.serialize_revisioned(writer)?;
16
3
        value.serialize_revisioned(writer)
17
      }
18
12
      None => 0u8.serialize_revisioned(writer),
19
    }
20
15
  }
Unexecuted instantiation: <core::option::Option<_> as revision::SerializeRevisioned>::serialize_revisioned::<_>
Unexecuted instantiation: <core::option::Option<surrealdb_core::val::Value> as revision::SerializeRevisioned>::serialize_revisioned::<alloc::vec::Vec<u8>>
Unexecuted instantiation: <core::option::Option<surrealdb_core::iam::auth::Auth> as revision::SerializeRevisioned>::serialize_revisioned::<alloc::vec::Vec<u8>>
Unexecuted instantiation: <core::option::Option<surrealdb_core::expr::fetch::Fetchs> as revision::SerializeRevisioned>::serialize_revisioned::<alloc::vec::Vec<u8>>
21
}
22
23
impl<T> DeserializeRevisioned for Option<T>
24
where
25
  T: DeserializeRevisioned,
26
{
27
  #[inline]
28
42.3k
  fn deserialize_revisioned<R: std::io::Read>(reader: &mut R) -> Result<Self, Error> {
29
42.3k
    let option = u8::deserialize_revisioned(reader)?;
30
42.3k
    match option {
31
38.4k
      0u8 => Ok(None),
32
3.95k
      1u8 => Ok(Some(T::deserialize_revisioned(reader)?)),
33
0
      value => Err(Error::Deserialize(format!("Invalid option value {}", value))),
34
    }
35
42.3k
  }
Unexecuted instantiation: <core::option::Option<alloc::vec::Vec<surrealdb_core::val::Value>> as revision::DeserializeRevisioned>::deserialize_revisioned::<&[u8]>
Unexecuted instantiation: <core::option::Option<alloc::vec::Vec<surrealdb_core::expr::kind::Kind>> as revision::DeserializeRevisioned>::deserialize_revisioned::<&[u8]>
<core::option::Option<alloc::vec::Vec<surrealdb_core::expr::filter::Filter>> as revision::DeserializeRevisioned>::deserialize_revisioned::<&[u8]>
Line
Count
Source
28
2
  fn deserialize_revisioned<R: std::io::Read>(reader: &mut R) -> Result<Self, Error> {
29
2
    let option = u8::deserialize_revisioned(reader)?;
30
2
    match option {
31
1
      0u8 => Ok(None),
32
1
      1u8 => Ok(Some(T::deserialize_revisioned(reader)?)),
33
0
      value => Err(Error::Deserialize(format!("Invalid option value {}", value))),
34
    }
35
2
  }
<core::option::Option<alloc::vec::Vec<surrealdb_core::expr::tokenizer::Tokenizer>> as revision::DeserializeRevisioned>::deserialize_revisioned::<&[u8]>
Line
Count
Source
28
2
  fn deserialize_revisioned<R: std::io::Read>(reader: &mut R) -> Result<Self, Error> {
29
2
    let option = u8::deserialize_revisioned(reader)?;
30
2
    match option {
31
2
      0u8 => Ok(None),
32
0
      1u8 => Ok(Some(T::deserialize_revisioned(reader)?)),
33
0
      value => Err(Error::Deserialize(format!("Invalid option value {}", value))),
34
    }
35
2
  }
Unexecuted instantiation: <core::option::Option<alloc::boxed::Box<surrealdb_core::expr::kind::Kind>> as revision::DeserializeRevisioned>::deserialize_revisioned::<&[u8]>
<core::option::Option<core::time::Duration> as revision::DeserializeRevisioned>::deserialize_revisioned::<&[u8]>
Line
Count
Source
28
2
  fn deserialize_revisioned<R: std::io::Read>(reader: &mut R) -> Result<Self, Error> {
29
2
    let option = u8::deserialize_revisioned(reader)?;
30
2
    match option {
31
1
      0u8 => Ok(None),
32
1
      1u8 => Ok(Some(T::deserialize_revisioned(reader)?)),
33
0
      value => Err(Error::Deserialize(format!("Invalid option value {}", value))),
34
    }
35
2
  }
Unexecuted instantiation: <core::option::Option<surrealdb_core::val::Value> as revision::DeserializeRevisioned>::deserialize_revisioned::<&[u8]>
<core::option::Option<alloc::string::String> as revision::DeserializeRevisioned>::deserialize_revisioned::<&[u8]>
Line
Count
Source
28
19.4k
  fn deserialize_revisioned<R: std::io::Read>(reader: &mut R) -> Result<Self, Error> {
29
19.4k
    let option = u8::deserialize_revisioned(reader)?;
30
19.4k
    match option {
31
19.4k
      0u8 => Ok(None),
32
1
      1u8 => Ok(Some(T::deserialize_revisioned(reader)?)),
33
0
      value => Err(Error::Deserialize(format!("Invalid option value {}", value))),
34
    }
35
19.4k
  }
Unexecuted instantiation: <core::option::Option<surrealdb_core::iam::auth::Auth> as revision::DeserializeRevisioned>::deserialize_revisioned::<&[u8]>
<core::option::Option<surrealdb_core::val::record::Metadata> as revision::DeserializeRevisioned>::deserialize_revisioned::<&[u8]>
Line
Count
Source
28
1.06k
  fn deserialize_revisioned<R: std::io::Read>(reader: &mut R) -> Result<Self, Error> {
29
1.06k
    let option = u8::deserialize_revisioned(reader)?;
30
1.06k
    match option {
31
1.04k
      0u8 => Ok(None),
32
16
      1u8 => Ok(Some(T::deserialize_revisioned(reader)?)),
33
0
      value => Err(Error::Deserialize(format!("Invalid option value {}", value))),
34
    }
35
1.06k
  }
Unexecuted instantiation: <core::option::Option<surrealdb_core::val::datetime::Datetime> as revision::DeserializeRevisioned>::deserialize_revisioned::<&[u8]>
<core::option::Option<surrealdb_core::expr::changefeed::ChangeFeed> as revision::DeserializeRevisioned>::deserialize_revisioned::<&[u8]>
Line
Count
Source
28
8.48k
  fn deserialize_revisioned<R: std::io::Read>(reader: &mut R) -> Result<Self, Error> {
29
8.48k
    let option = u8::deserialize_revisioned(reader)?;
30
8.48k
    match option {
31
8.48k
      0u8 => Ok(None),
32
0
      1u8 => Ok(Some(T::deserialize_revisioned(reader)?)),
33
0
      value => Err(Error::Deserialize(format!("Invalid option value {}", value))),
34
    }
35
8.48k
  }
<core::option::Option<surrealdb_core::expr::expression::Expr> as revision::DeserializeRevisioned>::deserialize_revisioned::<&[u8]>
Line
Count
Source
28
7.74k
  fn deserialize_revisioned<R: std::io::Read>(reader: &mut R) -> Result<Self, Error> {
29
7.74k
    let option = u8::deserialize_revisioned(reader)?;
30
7.74k
    match option {
31
6.36k
      0u8 => Ok(None),
32
1.38k
      1u8 => Ok(Some(T::deserialize_revisioned(reader)?)),
33
0
      value => Err(Error::Deserialize(format!("Invalid option value {}", value))),
34
    }
35
7.74k
  }
Unexecuted instantiation: <core::option::Option<surrealdb_core::expr::cond::Cond> as revision::DeserializeRevisioned>::deserialize_revisioned::<&[u8]>
<core::option::Option<surrealdb_core::expr::kind::Kind> as revision::DeserializeRevisioned>::deserialize_revisioned::<&[u8]>
Line
Count
Source
28
2.58k
  fn deserialize_revisioned<R: std::io::Read>(reader: &mut R) -> Result<Self, Error> {
29
2.58k
    let option = u8::deserialize_revisioned(reader)?;
30
2.58k
    match option {
31
47
      0u8 => Ok(None),
32
2.53k
      1u8 => Ok(Some(T::deserialize_revisioned(reader)?)),
33
0
      value => Err(Error::Deserialize(format!("Invalid option value {}", value))),
34
    }
35
2.58k
  }
Unexecuted instantiation: <core::option::Option<surrealdb_core::expr::fetch::Fetchs> as revision::DeserializeRevisioned>::deserialize_revisioned::<&[u8]>
Unexecuted instantiation: <core::option::Option<surrealdb_core::expr::group::Groups> as revision::DeserializeRevisioned>::deserialize_revisioned::<&[u8]>
Unexecuted instantiation: <core::option::Option<surrealdb_core::expr::idiom::Idiom> as revision::DeserializeRevisioned>::deserialize_revisioned::<&[u8]>
<core::option::Option<surrealdb_core::expr::reference::Reference> as revision::DeserializeRevisioned>::deserialize_revisioned::<&[u8]>
Line
Count
Source
28
2.58k
  fn deserialize_revisioned<R: std::io::Read>(reader: &mut R) -> Result<Self, Error> {
29
2.58k
    let option = u8::deserialize_revisioned(reader)?;
30
2.58k
    match option {
31
2.58k
      0u8 => Ok(None),
32
0
      1u8 => Ok(Some(T::deserialize_revisioned(reader)?)),
33
0
      value => Err(Error::Deserialize(format!("Invalid option value {}", value))),
34
    }
35
2.58k
  }
<core::option::Option<surrealdb_core::catalog::view::ViewDefinition> as revision::DeserializeRevisioned>::deserialize_revisioned::<&[u8]>
Line
Count
Source
28
96
  fn deserialize_revisioned<R: std::io::Read>(reader: &mut R) -> Result<Self, Error> {
29
96
    let option = u8::deserialize_revisioned(reader)?;
30
96
    match option {
31
96
      0u8 => Ok(None),
32
0
      1u8 => Ok(Some(T::deserialize_revisioned(reader)?)),
33
0
      value => Err(Error::Deserialize(format!("Invalid option value {}", value))),
34
    }
35
96
  }
Unexecuted instantiation: <core::option::Option<surrealdb_core::catalog::schema::access::BearerAccess> as revision::DeserializeRevisioned>::deserialize_revisioned::<&[u8]>
Unexecuted instantiation: <core::option::Option<surrealdb_core::catalog::schema::access::JwtAccessIssue> as revision::DeserializeRevisioned>::deserialize_revisioned::<&[u8]>
Unexecuted instantiation: <core::option::Option<surrealdb_core::catalog::schema::bucket::BucketId> as revision::DeserializeRevisioned>::deserialize_revisioned::<&[u8]>
<core::option::Option<u64> as revision::DeserializeRevisioned>::deserialize_revisioned::<&[u8]>
Line
Count
Source
28
336
  fn deserialize_revisioned<R: std::io::Read>(reader: &mut R) -> Result<Self, Error> {
29
336
    let option = u8::deserialize_revisioned(reader)?;
30
336
    match option {
31
322
      0u8 => Ok(None),
32
14
      1u8 => Ok(Some(T::deserialize_revisioned(reader)?)),
33
0
      value => Err(Error::Deserialize(format!("Invalid option value {}", value))),
34
    }
35
336
  }
Unexecuted instantiation: <core::option::Option<_> as revision::DeserializeRevisioned>::deserialize_revisioned::<_>
36
}
37
38
impl<T> Revisioned for Option<T>
39
where
40
  T: Revisioned,
41
{
42
  #[inline]
43
0
  fn revision() -> u16 {
44
0
    1
45
0
  }
46
}
47
48
#[cfg(test)]
49
mod tests {
50
51
  use super::*;
52
53
  #[test]
54
  fn test_option_none() {
55
    let val: Option<String> = None;
56
    let mut mem: Vec<u8> = vec![];
57
    val.serialize_revisioned(&mut mem).unwrap();
58
    assert_eq!(mem.len(), 1);
59
    let out =
60
      <Option<String> as DeserializeRevisioned>::deserialize_revisioned(&mut mem.as_slice())
61
        .unwrap();
62
    assert_eq!(val, out);
63
  }
64
65
  #[test]
66
  fn test_option_some() {
67
    let val: Option<String> = Some(String::from("this is a test"));
68
    let mut mem: Vec<u8> = vec![];
69
    val.serialize_revisioned(&mut mem).unwrap();
70
    assert_eq!(mem.len(), 16);
71
    let out =
72
      <Option<String> as DeserializeRevisioned>::deserialize_revisioned(&mut mem.as_slice())
73
        .unwrap();
74
    assert_eq!(val, out);
75
  }
76
}