1use std::error::Error;
13use std::fmt;
14
15use mz_repr::adt::array::InvalidArrayError;
16use mz_repr::adt::range::InvalidRangeError;
17
18#[derive(Debug)]
20pub enum IntoDatumError {
21 Range(InvalidRangeError),
23 Array(InvalidArrayError),
25}
26
27impl fmt::Display for IntoDatumError {
28 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
29 match self {
30 IntoDatumError::Range(e) => e.fmt(f),
31 IntoDatumError::Array(e) => e.fmt(f),
32 }
33 }
34}
35
36impl Error for IntoDatumError {
37 fn source(&self) -> Option<&(dyn Error + 'static)> {
38 match self {
39 IntoDatumError::Range(e) => Some(e),
40 IntoDatumError::Array(e) => Some(e),
41 }
42 }
43}
44
45impl From<InvalidRangeError> for IntoDatumError {
46 fn from(e: InvalidRangeError) -> Self {
47 IntoDatumError::Range(e)
48 }
49}
50
51impl From<InvalidArrayError> for IntoDatumError {
52 fn from(e: InvalidArrayError) -> Self {
53 IntoDatumError::Array(e)
54 }
55}