apidoc_core/
error.rs

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    // http状态
10    pub status: u16,
11
12    // 错误标识
13    pub code: String,
14
15    // 错误原因
16    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}