db_dump/
bool.rs

1use serde::de::{Deserializer, Visitor};
2use std::fmt;
3
4struct BoolVisitor;
5
6impl<'de> Visitor<'de> for BoolVisitor {
7    type Value = bool;
8
9    fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
10        formatter.write_str("'t' or 'f'")
11    }
12
13    fn visit_str<E>(self, string: &str) -> Result<Self::Value, E>
14    where
15        E: serde::de::Error,
16    {
17        if string == "t" {
18            Ok(true)
19        } else if string == "f" {
20            Ok(false)
21        } else {
22            Err(serde::de::Error::unknown_variant(string, &["t", "f"]))
23        }
24    }
25}
26
27pub(crate) fn de<'de, D>(deserializer: D) -> Result<bool, D::Error>
28where
29    D: Deserializer<'de>,
30{
31    deserializer.deserialize_str(BoolVisitor)
32}