prusto_rs/types/
boolean.rs

1use serde::de::{Deserialize, DeserializeSeed, Deserializer};
2
3use super::{Context, Presto, PrestoMapKey, PrestoTy};
4
5impl Presto for bool {
6    type ValueType<'a> = &'a bool;
7    type Seed<'a, 'de> = BoolSeed;
8
9    fn value(&self) -> Self::ValueType<'_> {
10        self
11    }
12
13    fn ty() -> PrestoTy {
14        PrestoTy::Boolean
15    }
16
17    fn seed<'a, 'de>(_ctx: &'a Context) -> Self::Seed<'a, 'de> {
18        BoolSeed
19    }
20
21    fn empty() -> Self {
22        Default::default()
23    }
24}
25
26impl PrestoMapKey for bool {}
27
28pub struct BoolSeed;
29
30impl<'de> DeserializeSeed<'de> for BoolSeed {
31    type Value = bool;
32    fn deserialize<D>(self, deserializer: D) -> Result<Self::Value, D::Error>
33    where
34        D: Deserializer<'de>,
35    {
36        Self::Value::deserialize(deserializer)
37    }
38}