use alloc::string::String;
#[derive(Debug, Clone, PartialEq, Eq, thiserror::Error)]
#[non_exhaustive]
pub enum DecodeError {
#[error("no decoder registered for column {column:?}")]
NoDecoderForType {
column: String,
},
#[error("decoder {decoder} is not yet implemented")]
NotYetImplemented {
decoder: &'static str,
},
#[error("column {column:?} carried non-UTF-8 bytes")]
InvalidUtf8 {
column: String,
},
#[error("column {column:?} carried a malformed UUID (source length {source_len})")]
InvalidUuid {
column: String,
source_len: usize,
},
#[error("column {column:?} carried a malformed \\x hex escape at offset {at}")]
InvalidHexEscape {
column: String,
at: usize,
},
#[error("column {column:?} integer digits overflowed i64: {digits}")]
IntegerOverflow {
column: String,
digits: String,
},
#[error("column {column:?} carried a decimal as a lossy JSON number")]
DecimalPrecisionLoss {
column: String,
},
#[error("column {column:?} JSON value did not serialize: {error}")]
JsonNotSerializable {
column: String,
error: String,
},
#[error("column {column:?} payload kind mismatch: expected {expected}, got {actual}")]
WrongPayloadKind {
column: String,
expected: &'static str,
actual: &'static str,
},
#[error("column {column:?}: {message}")]
Custom {
column: String,
message: String,
},
}