teo_runtime/middleware/
use.rs

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