1use std::{convert::Infallible, sync::Arc};
2
3use serde::{Deserialize, Serialize};
4
5use crate::document::ApiDocument;
6
7#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Hash)]
8pub struct ApiErrorItem {
9 pub status: u16,
11
12 pub code: String,
14
15 pub cause: String,
17}
18
19pub trait ApiErrors {
20 fn api_errors() -> Vec<ApiErrorItem>;
21}
22
23impl ApiErrors for Infallible {
24 fn api_errors() -> Vec<ApiErrorItem> {
25 vec![]
26 }
27}
28
29impl<T: ApiErrors> ApiErrors for Arc<T> {
30 fn api_errors() -> Vec<ApiErrorItem> {
31 T::api_errors()
32 }
33}
34
35impl ApiErrors for ApiDocument {
36 fn api_errors() -> Vec<ApiErrorItem> {
37 vec![]
38 }
39}