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