teo_runtime/middleware/
definition.rs1use 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}