/rust/registry/src/index.crates.io-1949cf8c6b5b557f/sval-2.19.0/src/data/option.rs
Line | Count | Source |
1 | | use crate::{tags, Index, Label, Result, Stream, Value}; |
2 | | |
3 | | /** |
4 | | The absence of any meaningful value. |
5 | | */ |
6 | | #[derive(Debug, Clone, Copy, PartialEq, Eq)] |
7 | | pub struct Null; |
8 | | |
9 | | impl Value for Null { |
10 | 0 | fn stream<'sval, S: Stream<'sval> + ?Sized>(&'sval self, stream: &mut S) -> Result { |
11 | 0 | stream.null() |
12 | 0 | } |
13 | | } |
14 | | |
15 | | impl<T: Value> Value for Option<T> { |
16 | 0 | fn stream<'a, S: Stream<'a> + ?Sized>(&'a self, stream: &mut S) -> Result { |
17 | 0 | if let Some(some) = self { |
18 | 0 | stream.tagged_begin( |
19 | 0 | Some(&tags::RUST_OPTION_SOME), |
20 | 0 | Some(&Label::new("Some").with_tag(&tags::VALUE_IDENT)), |
21 | 0 | Some(&Index::new(1).with_tag(&tags::VALUE_OFFSET)), |
22 | 0 | )?; |
23 | | |
24 | 0 | stream.value(some)?; |
25 | | |
26 | 0 | stream.tagged_end( |
27 | 0 | Some(&tags::RUST_OPTION_SOME), |
28 | 0 | Some(&Label::new("Some").with_tag(&tags::VALUE_IDENT)), |
29 | 0 | Some(&Index::new(1).with_tag(&tags::VALUE_OFFSET)), |
30 | | ) |
31 | | } else { |
32 | 0 | stream.tag( |
33 | 0 | Some(&tags::RUST_OPTION_NONE), |
34 | 0 | Some(&Label::new("None").with_tag(&tags::VALUE_IDENT)), |
35 | 0 | Some(&Index::new(0).with_tag(&tags::VALUE_OFFSET)), |
36 | | ) |
37 | | } |
38 | 0 | } Unexecuted instantiation: <core::option::Option<sval_serde::to_value::ToValue<&dyn erased_serde::ser::Serialize>> as sval::value::Value>::stream::<dyn sval_dynamic::stream::Stream> Unexecuted instantiation: <core::option::Option<sval_serde::to_value::ToValue<&dyn erased_serde::ser::Serialize>> as sval::value::Value>::stream::<sval::stream::Computed<sval::value::default_value::tag::Extract>> Unexecuted instantiation: <core::option::Option<sval_serde::to_value::ToValue<&dyn erased_serde::ser::Serialize>> as sval::value::Value>::stream::<sval::stream::Computed<sval::value::default_value::to_f32::Extract>> Unexecuted instantiation: <core::option::Option<sval_serde::to_value::ToValue<&dyn erased_serde::ser::Serialize>> as sval::value::Value>::stream::<sval::stream::Computed<sval::value::default_value::to_f64::Extract>> Unexecuted instantiation: <core::option::Option<sval_serde::to_value::ToValue<&dyn erased_serde::ser::Serialize>> as sval::value::Value>::stream::<sval::stream::Computed<sval::value::default_value::to_bool::Extract>> Unexecuted instantiation: <core::option::Option<sval_serde::to_value::ToValue<&dyn erased_serde::ser::Serialize>> as sval::value::Value>::stream::<sval::stream::Computed<sval::value::default_value::to_i128::Extract>> Unexecuted instantiation: <core::option::Option<sval_serde::to_value::ToValue<&dyn erased_serde::ser::Serialize>> as sval::value::Value>::stream::<sval::stream::Computed<sval::value::default_value::to_text::Extract>> Unexecuted instantiation: <core::option::Option<sval_serde::to_value::ToValue<&dyn erased_serde::ser::Serialize>> as sval::value::Value>::stream::<sval::stream::Computed<sval::value::default_value::to_u128::Extract>> Unexecuted instantiation: <core::option::Option<sval_serde::to_value::ToValue<&dyn erased_serde::ser::Serialize>> as sval::value::Value>::stream::<sval::stream::Computed<sval::value::default_value::to_binary::Extract>> Unexecuted instantiation: <core::option::Option<sval_serde::to_value::ToValue<&dyn erased_serde::ser::Serialize>> as sval::value::Value>::stream::<sval::value::default_value::tag::Extract> Unexecuted instantiation: <core::option::Option<()> as sval::value::Value>::stream::<dyn sval_dynamic::stream::Stream> Unexecuted instantiation: <core::option::Option<()> as sval::value::Value>::stream::<sval::stream::Computed<sval::value::default_value::tag::Extract>> Unexecuted instantiation: <core::option::Option<()> as sval::value::Value>::stream::<sval::stream::Computed<sval::value::default_value::to_f32::Extract>> Unexecuted instantiation: <core::option::Option<()> as sval::value::Value>::stream::<sval::stream::Computed<sval::value::default_value::to_f64::Extract>> Unexecuted instantiation: <core::option::Option<()> as sval::value::Value>::stream::<sval::stream::Computed<sval::value::default_value::to_bool::Extract>> Unexecuted instantiation: <core::option::Option<()> as sval::value::Value>::stream::<sval::stream::Computed<sval::value::default_value::to_i128::Extract>> Unexecuted instantiation: <core::option::Option<()> as sval::value::Value>::stream::<sval::stream::Computed<sval::value::default_value::to_text::Extract>> Unexecuted instantiation: <core::option::Option<()> as sval::value::Value>::stream::<sval::stream::Computed<sval::value::default_value::to_u128::Extract>> Unexecuted instantiation: <core::option::Option<()> as sval::value::Value>::stream::<sval::stream::Computed<sval::value::default_value::to_binary::Extract>> Unexecuted instantiation: <core::option::Option<()> as sval::value::Value>::stream::<sval::value::default_value::tag::Extract> Unexecuted instantiation: <core::option::Option<_> as sval::value::Value>::stream::<_> |
39 | | |
40 | | #[inline] |
41 | 0 | fn to_bool(&self) -> Option<bool> { |
42 | 0 | self.as_ref().and_then(|value| value.to_bool()) Unexecuted instantiation: <core::option::Option<sval_serde::to_value::ToValue<&dyn erased_serde::ser::Serialize>> as sval::value::Value>::to_bool::{closure#0}Unexecuted instantiation: <core::option::Option<()> as sval::value::Value>::to_bool::{closure#0}Unexecuted instantiation: <core::option::Option<_> as sval::value::Value>::to_bool::{closure#0} |
43 | 0 | } Unexecuted instantiation: <core::option::Option<sval_serde::to_value::ToValue<&dyn erased_serde::ser::Serialize>> as sval::value::Value>::to_bool Unexecuted instantiation: <core::option::Option<()> as sval::value::Value>::to_bool Unexecuted instantiation: <core::option::Option<_> as sval::value::Value>::to_bool |
44 | | |
45 | | #[inline] |
46 | 0 | fn to_f32(&self) -> Option<f32> { |
47 | 0 | self.as_ref().and_then(|value| value.to_f32()) Unexecuted instantiation: <core::option::Option<sval_serde::to_value::ToValue<&dyn erased_serde::ser::Serialize>> as sval::value::Value>::to_f32::{closure#0}Unexecuted instantiation: <core::option::Option<()> as sval::value::Value>::to_f32::{closure#0}Unexecuted instantiation: <core::option::Option<_> as sval::value::Value>::to_f32::{closure#0} |
48 | 0 | } Unexecuted instantiation: <core::option::Option<sval_serde::to_value::ToValue<&dyn erased_serde::ser::Serialize>> as sval::value::Value>::to_f32 Unexecuted instantiation: <core::option::Option<()> as sval::value::Value>::to_f32 Unexecuted instantiation: <core::option::Option<_> as sval::value::Value>::to_f32 |
49 | | |
50 | | #[inline] |
51 | 0 | fn to_f64(&self) -> Option<f64> { |
52 | 0 | self.as_ref().and_then(|value| value.to_f64()) Unexecuted instantiation: <core::option::Option<sval_serde::to_value::ToValue<&dyn erased_serde::ser::Serialize>> as sval::value::Value>::to_f64::{closure#0}Unexecuted instantiation: <core::option::Option<()> as sval::value::Value>::to_f64::{closure#0}Unexecuted instantiation: <core::option::Option<_> as sval::value::Value>::to_f64::{closure#0} |
53 | 0 | } Unexecuted instantiation: <core::option::Option<sval_serde::to_value::ToValue<&dyn erased_serde::ser::Serialize>> as sval::value::Value>::to_f64 Unexecuted instantiation: <core::option::Option<()> as sval::value::Value>::to_f64 Unexecuted instantiation: <core::option::Option<_> as sval::value::Value>::to_f64 |
54 | | |
55 | | #[inline] |
56 | 0 | fn to_i8(&self) -> Option<i8> { |
57 | 0 | self.as_ref().and_then(|value| value.to_i8()) Unexecuted instantiation: <core::option::Option<sval_serde::to_value::ToValue<&dyn erased_serde::ser::Serialize>> as sval::value::Value>::to_i8::{closure#0}Unexecuted instantiation: <core::option::Option<()> as sval::value::Value>::to_i8::{closure#0}Unexecuted instantiation: <core::option::Option<_> as sval::value::Value>::to_i8::{closure#0} |
58 | 0 | } Unexecuted instantiation: <core::option::Option<sval_serde::to_value::ToValue<&dyn erased_serde::ser::Serialize>> as sval::value::Value>::to_i8 Unexecuted instantiation: <core::option::Option<()> as sval::value::Value>::to_i8 Unexecuted instantiation: <core::option::Option<_> as sval::value::Value>::to_i8 |
59 | | |
60 | | #[inline] |
61 | 0 | fn to_i16(&self) -> Option<i16> { |
62 | 0 | self.as_ref().and_then(|value| value.to_i16()) Unexecuted instantiation: <core::option::Option<sval_serde::to_value::ToValue<&dyn erased_serde::ser::Serialize>> as sval::value::Value>::to_i16::{closure#0}Unexecuted instantiation: <core::option::Option<()> as sval::value::Value>::to_i16::{closure#0}Unexecuted instantiation: <core::option::Option<_> as sval::value::Value>::to_i16::{closure#0} |
63 | 0 | } Unexecuted instantiation: <core::option::Option<sval_serde::to_value::ToValue<&dyn erased_serde::ser::Serialize>> as sval::value::Value>::to_i16 Unexecuted instantiation: <core::option::Option<()> as sval::value::Value>::to_i16 Unexecuted instantiation: <core::option::Option<_> as sval::value::Value>::to_i16 |
64 | | |
65 | | #[inline] |
66 | 0 | fn to_i32(&self) -> Option<i32> { |
67 | 0 | self.as_ref().and_then(|value| value.to_i32()) Unexecuted instantiation: <core::option::Option<sval_serde::to_value::ToValue<&dyn erased_serde::ser::Serialize>> as sval::value::Value>::to_i32::{closure#0}Unexecuted instantiation: <core::option::Option<()> as sval::value::Value>::to_i32::{closure#0}Unexecuted instantiation: <core::option::Option<_> as sval::value::Value>::to_i32::{closure#0} |
68 | 0 | } Unexecuted instantiation: <core::option::Option<sval_serde::to_value::ToValue<&dyn erased_serde::ser::Serialize>> as sval::value::Value>::to_i32 Unexecuted instantiation: <core::option::Option<()> as sval::value::Value>::to_i32 Unexecuted instantiation: <core::option::Option<_> as sval::value::Value>::to_i32 |
69 | | |
70 | | #[inline] |
71 | 0 | fn to_i64(&self) -> Option<i64> { |
72 | 0 | self.as_ref().and_then(|value| value.to_i64()) Unexecuted instantiation: <core::option::Option<sval_serde::to_value::ToValue<&dyn erased_serde::ser::Serialize>> as sval::value::Value>::to_i64::{closure#0}Unexecuted instantiation: <core::option::Option<()> as sval::value::Value>::to_i64::{closure#0}Unexecuted instantiation: <core::option::Option<_> as sval::value::Value>::to_i64::{closure#0} |
73 | 0 | } Unexecuted instantiation: <core::option::Option<sval_serde::to_value::ToValue<&dyn erased_serde::ser::Serialize>> as sval::value::Value>::to_i64 Unexecuted instantiation: <core::option::Option<()> as sval::value::Value>::to_i64 Unexecuted instantiation: <core::option::Option<_> as sval::value::Value>::to_i64 |
74 | | |
75 | | #[inline] |
76 | 0 | fn to_i128(&self) -> Option<i128> { |
77 | 0 | self.as_ref().and_then(|value| value.to_i128()) Unexecuted instantiation: <core::option::Option<sval_serde::to_value::ToValue<&dyn erased_serde::ser::Serialize>> as sval::value::Value>::to_i128::{closure#0}Unexecuted instantiation: <core::option::Option<()> as sval::value::Value>::to_i128::{closure#0}Unexecuted instantiation: <core::option::Option<_> as sval::value::Value>::to_i128::{closure#0} |
78 | 0 | } Unexecuted instantiation: <core::option::Option<sval_serde::to_value::ToValue<&dyn erased_serde::ser::Serialize>> as sval::value::Value>::to_i128 Unexecuted instantiation: <core::option::Option<()> as sval::value::Value>::to_i128 Unexecuted instantiation: <core::option::Option<_> as sval::value::Value>::to_i128 |
79 | | |
80 | | #[inline] |
81 | 0 | fn to_u8(&self) -> Option<u8> { |
82 | 0 | self.as_ref().and_then(|value| value.to_u8()) Unexecuted instantiation: <core::option::Option<sval_serde::to_value::ToValue<&dyn erased_serde::ser::Serialize>> as sval::value::Value>::to_u8::{closure#0}Unexecuted instantiation: <core::option::Option<()> as sval::value::Value>::to_u8::{closure#0}Unexecuted instantiation: <core::option::Option<_> as sval::value::Value>::to_u8::{closure#0} |
83 | 0 | } Unexecuted instantiation: <core::option::Option<sval_serde::to_value::ToValue<&dyn erased_serde::ser::Serialize>> as sval::value::Value>::to_u8 Unexecuted instantiation: <core::option::Option<()> as sval::value::Value>::to_u8 Unexecuted instantiation: <core::option::Option<_> as sval::value::Value>::to_u8 |
84 | | |
85 | | #[inline] |
86 | 0 | fn to_u16(&self) -> Option<u16> { |
87 | 0 | self.as_ref().and_then(|value| value.to_u16()) Unexecuted instantiation: <core::option::Option<sval_serde::to_value::ToValue<&dyn erased_serde::ser::Serialize>> as sval::value::Value>::to_u16::{closure#0}Unexecuted instantiation: <core::option::Option<()> as sval::value::Value>::to_u16::{closure#0}Unexecuted instantiation: <core::option::Option<_> as sval::value::Value>::to_u16::{closure#0} |
88 | 0 | } Unexecuted instantiation: <core::option::Option<sval_serde::to_value::ToValue<&dyn erased_serde::ser::Serialize>> as sval::value::Value>::to_u16 Unexecuted instantiation: <core::option::Option<()> as sval::value::Value>::to_u16 Unexecuted instantiation: <core::option::Option<_> as sval::value::Value>::to_u16 |
89 | | |
90 | | #[inline] |
91 | 0 | fn to_u32(&self) -> Option<u32> { |
92 | 0 | self.as_ref().and_then(|value| value.to_u32()) Unexecuted instantiation: <core::option::Option<sval_serde::to_value::ToValue<&dyn erased_serde::ser::Serialize>> as sval::value::Value>::to_u32::{closure#0}Unexecuted instantiation: <core::option::Option<()> as sval::value::Value>::to_u32::{closure#0}Unexecuted instantiation: <core::option::Option<_> as sval::value::Value>::to_u32::{closure#0} |
93 | 0 | } Unexecuted instantiation: <core::option::Option<sval_serde::to_value::ToValue<&dyn erased_serde::ser::Serialize>> as sval::value::Value>::to_u32 Unexecuted instantiation: <core::option::Option<()> as sval::value::Value>::to_u32 Unexecuted instantiation: <core::option::Option<_> as sval::value::Value>::to_u32 |
94 | | |
95 | | #[inline] |
96 | 0 | fn to_u64(&self) -> Option<u64> { |
97 | 0 | self.as_ref().and_then(|value| value.to_u64()) Unexecuted instantiation: <core::option::Option<sval_serde::to_value::ToValue<&dyn erased_serde::ser::Serialize>> as sval::value::Value>::to_u64::{closure#0}Unexecuted instantiation: <core::option::Option<()> as sval::value::Value>::to_u64::{closure#0}Unexecuted instantiation: <core::option::Option<_> as sval::value::Value>::to_u64::{closure#0} |
98 | 0 | } Unexecuted instantiation: <core::option::Option<sval_serde::to_value::ToValue<&dyn erased_serde::ser::Serialize>> as sval::value::Value>::to_u64 Unexecuted instantiation: <core::option::Option<()> as sval::value::Value>::to_u64 Unexecuted instantiation: <core::option::Option<_> as sval::value::Value>::to_u64 |
99 | | |
100 | | #[inline] |
101 | 0 | fn to_u128(&self) -> Option<u128> { |
102 | 0 | self.as_ref().and_then(|value| value.to_u128()) Unexecuted instantiation: <core::option::Option<sval_serde::to_value::ToValue<&dyn erased_serde::ser::Serialize>> as sval::value::Value>::to_u128::{closure#0}Unexecuted instantiation: <core::option::Option<()> as sval::value::Value>::to_u128::{closure#0}Unexecuted instantiation: <core::option::Option<_> as sval::value::Value>::to_u128::{closure#0} |
103 | 0 | } Unexecuted instantiation: <core::option::Option<sval_serde::to_value::ToValue<&dyn erased_serde::ser::Serialize>> as sval::value::Value>::to_u128 Unexecuted instantiation: <core::option::Option<()> as sval::value::Value>::to_u128 Unexecuted instantiation: <core::option::Option<_> as sval::value::Value>::to_u128 |
104 | | |
105 | | #[inline] |
106 | 0 | fn to_text(&self) -> Option<&str> { |
107 | 0 | self.as_ref().and_then(|value| value.to_text()) Unexecuted instantiation: <core::option::Option<sval_serde::to_value::ToValue<&dyn erased_serde::ser::Serialize>> as sval::value::Value>::to_text::{closure#0}Unexecuted instantiation: <core::option::Option<()> as sval::value::Value>::to_text::{closure#0}Unexecuted instantiation: <core::option::Option<_> as sval::value::Value>::to_text::{closure#0} |
108 | 0 | } Unexecuted instantiation: <core::option::Option<sval_serde::to_value::ToValue<&dyn erased_serde::ser::Serialize>> as sval::value::Value>::to_text Unexecuted instantiation: <core::option::Option<()> as sval::value::Value>::to_text Unexecuted instantiation: <core::option::Option<_> as sval::value::Value>::to_text |
109 | | |
110 | | #[inline] |
111 | 0 | fn to_binary(&self) -> Option<&[u8]> { |
112 | 0 | self.as_ref().and_then(|value| value.to_binary()) Unexecuted instantiation: <core::option::Option<sval_serde::to_value::ToValue<&dyn erased_serde::ser::Serialize>> as sval::value::Value>::to_binary::{closure#0}Unexecuted instantiation: <core::option::Option<()> as sval::value::Value>::to_binary::{closure#0}Unexecuted instantiation: <core::option::Option<_> as sval::value::Value>::to_binary::{closure#0} |
113 | 0 | } Unexecuted instantiation: <core::option::Option<sval_serde::to_value::ToValue<&dyn erased_serde::ser::Serialize>> as sval::value::Value>::to_binary Unexecuted instantiation: <core::option::Option<()> as sval::value::Value>::to_binary Unexecuted instantiation: <core::option::Option<_> as sval::value::Value>::to_binary |
114 | | } |
115 | | |
116 | | #[cfg(test)] |
117 | | mod tests { |
118 | | use super::*; |
119 | | |
120 | | #[test] |
121 | | fn option_cast() { |
122 | | assert_eq!(Some(1u8), Some(1u8).to_u8()); |
123 | | assert_eq!(Some(2u16), Some(2u16).to_u16()); |
124 | | assert_eq!(Some(3u32), Some(3u32).to_u32()); |
125 | | assert_eq!(Some(4u64), Some(4u64).to_u64()); |
126 | | assert_eq!(Some(42u128), Some(42u128).to_u128()); |
127 | | |
128 | | assert_eq!(Some(1i8), Some(1i8).to_i8()); |
129 | | assert_eq!(Some(2i16), Some(2i16).to_i16()); |
130 | | assert_eq!(Some(3i32), Some(3i32).to_i32()); |
131 | | assert_eq!(Some(4i64), Some(4i64).to_i64()); |
132 | | assert_eq!(Some(42i128), Some(42i128).to_i128()); |
133 | | |
134 | | assert_eq!(Some(3f32), Some(3f32).to_f32()); |
135 | | assert_eq!(Some(4f64), Some(4f64).to_f64()); |
136 | | |
137 | | assert_eq!(Some(true), Some(true).to_bool()); |
138 | | |
139 | | assert_eq!(Some("a string"), Some("a string").to_text()); |
140 | | } |
141 | | |
142 | | #[test] |
143 | | fn option_tag() { |
144 | | assert_eq!(Some(tags::RUST_OPTION_SOME), Some(42).tag()); |
145 | | assert_eq!(Some(tags::RUST_OPTION_NONE), None::<i32>.tag()); |
146 | | } |
147 | | } |