open_ai/openai_error.rs
1// use std::fmt;
2// use serde::{Serialize, Deserialize};
3//
4// const ERROR_MSG_LEN: usize = 256;
5//
6// #[derive(Debug, Clone, Copy, Serialize, Deserialize)]
7// pub struct Error {
8// msg: [char; ERROR_MSG_LEN],
9// len: usize,
10// }
11//
12// impl Error {
13// pub fn new(msg: &str) -> Self {
14// let mut buffer = ['\0'; ERROR_MSG_LEN];
15// let chars = msg.chars().take(ERROR_MSG_LEN).enumerate();
16// for (i, c) in chars {
17// buffer[i] = c;
18// }
19// Self {
20// msg: buffer,
21// len: msg.len().min(ERROR_MSG_LEN),
22// }
23// }
24// }
25//
26// impl fmt::Display for Error {
27// fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
28// for &c in self.msg.iter().take(self.len) {
29// write!(f, "{}", c)?;
30// }
31// Ok(())
32// }
33// }
34//
35// impl std::error::Error for Error {}
36//
37// impl From<reqwest::Error> for Error {
38// fn from(err: reqwest::Error) -> Self {
39// let status = err.status();
40// match status {
41// Some(code) => Error::new(&err.to_string()),
42// None => Error::new(&err.to_string()),
43// }
44// }
45// }
46//
47// impl From<serde_json::Error> for Error {
48// fn from(err: serde_json::Error) -> Self {
49// Error::new(&err.to_string())
50// }
51// }