ai_providers/openai/
errors.rs

1use std::{error::Error, fmt::Display};
2
3#[derive(Debug, PartialEq)]
4pub enum ConversionError {
5    FromStr(String),
6    TryFrom(String),
7}
8
9impl Display for ConversionError {
10    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
11        match self {
12            ConversionError::FromStr(msg) => write!(f, "Failed to convert from string: {}", msg),
13            ConversionError::TryFrom(msg) => {
14                write!(f, "Failed to convert from {} to target type", msg)
15            }
16        }
17    }
18}
19
20impl Error for ConversionError {}
21
22#[derive(Debug, PartialEq)]
23pub enum InputError {
24    InvalidToolType(String),
25    InvalidRole(String),
26    InvalidButton(String),
27    ConversionError(ConversionError),
28    InvalidModelId(String),
29}
30
31impl Display for InputError {
32    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
33        match self {
34            InputError::InvalidToolType(msg) => write!(f, "Invalid tool type: {}", msg),
35            InputError::InvalidRole(msg) => {
36                write!(
37                    f,
38                    "The role {} is not compatible with InputMessageItem",
39                    msg
40                )
41            }
42            InputError::InvalidButton(msg) => {
43                write!(f, "Invalid button value: {}", msg)
44            }
45            InputError::ConversionError(err) => write!(f, "Conversion error: {}", err),
46            InputError::InvalidModelId(err) => write!(f, "Invalid model id: {}", err),
47        }
48    }
49}
50
51impl Error for InputError {}
52
53impl From<ConversionError> for InputError {
54    fn from(error: ConversionError) -> Self {
55        InputError::ConversionError(error)
56    }
57}