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