use super::error::DecodeError;
use super::source::WireSource;
use crate::encoding::Value;
pub trait Decoder<Src: WireSource, S, B> {
fn decode(&self, payload: Src::Payload<'_>) -> Result<Value<S, B>, DecodeError>;
}
#[derive(Debug, Clone, Copy, Default)]
pub struct NullDecoder;
#[derive(Debug, Clone, Copy, Default)]
pub struct BoolDecoder;
#[derive(Debug, Clone, Copy, Default)]
pub struct IntDecoder;
#[derive(Debug, Clone, Copy, Default)]
pub struct Int64OverflowToTextDecoder;
#[derive(Debug, Clone, Copy, Default)]
pub struct RealDecoder;
#[derive(Debug, Clone, Copy, Default)]
pub struct TextDecoder;
#[derive(Debug, Clone, Copy, Default)]
pub struct PgByteaBinaryDecoder;
#[derive(Debug, Clone, Copy, Default)]
pub struct PgByteaTextModeDecoder;
#[derive(Debug, Clone, Copy, Default)]
pub struct MySqlBinaryDecoder;
#[derive(Debug, Clone, Copy, Default)]
pub struct UuidBlob16Decoder;
#[derive(Debug, Clone, Copy, Default)]
pub struct UuidText36Decoder;
#[derive(Debug, Clone, Copy, Default)]
pub struct DecimalTextDecoder;
#[derive(Debug, Clone, Copy, Default)]
pub struct TimestampVerbatimDecoder;
#[derive(Debug, Clone, Copy, Default)]
pub struct TimestampTzVerbatimDecoder;
#[derive(Debug, Clone, Copy, Default)]
pub struct DateVerbatimDecoder;
#[derive(Debug, Clone, Copy, Default)]
pub struct TimeVerbatimDecoder;
#[derive(Debug, Clone, Copy, Default)]
pub struct IntervalVerbatimDecoder;
#[derive(Debug, Clone, Copy, Default)]
pub struct JsonVerbatimDecoder;
#[derive(Debug, Clone, Copy, Default)]
pub struct JsonCanonicalDecoder;