eureka_mmanager/files_dirs/messages/join/
join_data.rs1use 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}