Skip to main content

eureka_mmanager/files_dirs/messages/join/
join_data.rs

1use crate::files_dirs::DirsOptions;
2use actix::prelude::*;
3use std::{
4    fmt::Debug,
5    path::{Path, PathBuf},
6};
7
8#[derive(Debug, Message)]
9#[rtype(result = "std::path::PathBuf")]
10pub struct JoinDataMessage<T>(pub T)
11where
12    T: AsRef<Path> + Debug;
13
14impl<T> Clone for JoinDataMessage<T>
15where
16    T: Clone + Debug + AsRef<Path>,
17{
18    fn clone(&self) -> Self {
19        Self(self.0.clone())
20    }
21}
22
23impl<T> AsRef<Path> for JoinDataMessage<T>
24where
25    T: AsRef<Path> + Debug,
26{
27    fn as_ref(&self) -> &Path {
28        self.0.as_ref()
29    }
30}
31
32impl<T> From<T> for JoinDataMessage<T>
33where
34    T: AsRef<Path> + Debug,
35{
36    fn from(value: T) -> Self {
37        Self(value)
38    }
39}
40
41impl<T> Handler<JoinDataMessage<T>> for DirsOptions
42where
43    T: AsRef<Path> + Debug,
44{
45    type Result = PathBuf;
46    fn handle(&mut self, msg: JoinDataMessage<T>, _ctx: &mut Self::Context) -> Self::Result {
47        self.data_dir_add(msg)
48    }
49}