rust_cutil/cutil/
meta.rs

1use serde::{Deserialize, Serialize};
2use serde_json::Value;
3use std::error::Error;
4use std::fmt;
5use utoipa::ToSchema;
6
7#[macro_export]
8macro_rules! meta {
9  ($name: expr) => {
10    Meta {
11      name: $name.to_string(),
12      message: "".to_string(),
13      data: None,
14    }
15    .into()
16  };
17  ($name: expr, $message: expr) => {
18    Meta {
19      name: $name.to_string(),
20      message: $message.to_string(),
21      data: None,
22    }
23    .into()
24  };
25  ($name: expr, $message: expr, $data: expr) => {
26    Meta {
27      name: $name.to_string(),
28      message: $message.to_string(),
29      data: Some($data),
30    }
31    .into()
32  };
33}
34
35pub type R<T> = std::result::Result<T, Meta>;
36
37#[derive(Debug, Serialize, Deserialize, ToSchema)]
38pub struct Meta {
39  pub name: String,
40  pub message: String,
41  pub data: Option<Value>,
42}
43
44unsafe impl Send for Meta {}
45
46unsafe impl Sync for Meta {}
47
48impl Error for Meta {}
49
50impl fmt::Display for Meta {
51  fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
52    write!(f, "Meta: name={}, message={}, data: {:?}", self.name, self.message, self.data)
53  }
54}