trino-rust-client 0.7.3

A trino client library
Documentation
use crate::{Context, Trino, TrinoTy};
use serde::de::DeserializeSeed;
use serde::{Deserialize, Deserializer};
use serde_json::Value;

impl Trino for Value {
    type ValueType<'a> = &'a Value;
    type Seed<'a, 'de> = ValueSeed;

    fn value(&self) -> Self::ValueType<'_> {
        self
    }

    fn ty() -> TrinoTy {
        TrinoTy::Json
    }

    fn seed<'a, 'de>(_: &'a Context<'a>) -> Self::Seed<'a, 'de> {
        ValueSeed
    }

    fn empty() -> Self {
        Default::default()
    }
}

pub struct ValueSeed;

impl<'de> DeserializeSeed<'de> for ValueSeed {
    type Value = Value;
    fn deserialize<D>(self, deserializer: D) -> Result<Self::Value, D::Error>
    where
        D: Deserializer<'de>,
    {
        <Value as Deserialize<'de>>::deserialize(deserializer)
    }
}