teo_runtime/middleware/
definition.rs

1use std::sync::Arc;
2use educe::Educe;
3use serde::Serialize;
4use crate::app::data::AppData;
5use super::creator::Creator;
6
7#[derive(Debug, Clone)]
8pub struct Definition {
9    inner: Arc<Inner>,
10}
11
12#[derive(Educe, Serialize)]
13#[educe(Debug)]
14struct Inner {
15    path: Vec<String>,
16    #[educe(Debug(ignore))] #[serde(skip)]
17    creator: Arc<dyn Creator>,
18    #[serde(skip)]
19    app_data: AppData,
20}
21
22impl Definition {
23
24    pub fn new(path: Vec<String>, creator: Arc<dyn Creator>, app_data: AppData) -> Self {
25        Self {
26            inner: Arc::new(Inner {
27                path,
28                creator,
29                app_data,
30            }),
31        }
32    }
33
34    pub fn path(&self) -> &Vec<String> {
35        &self.inner.path
36    }
37
38    pub fn creator(&self) -> Arc<dyn Creator> {
39        self.inner.creator.clone()
40    }
41}
42
43impl Serialize for Definition {
44    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> where S: serde::Serializer {
45        self.inner.serialize(serializer)
46    }
47}