generic_robot_framework/models/
message.rs

1use std::fmt::{Debug, Display, Formatter};
2use serde::{Deserialize, Serialize};
3
4#[derive(Clone, Debug, Serialize, Deserialize)]
5pub struct Message<T: crate::traits::MessageTrait> {
6    pub kind: String,
7    pub topic: Option<String>,
8    pub message: Option<T>,
9    pub message_type: Option<String>
10}
11
12#[derive(Clone, Debug, Serialize, Deserialize)]
13pub struct NoneType {
14
15}
16
17impl Display for NoneType {
18    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
19        write!(f, "None")
20    }
21}
22
23impl Default for NoneType {
24    fn default() -> Self {
25        NoneType {
26
27        }
28    }
29}
30
31impl crate::traits::MessageTrait for NoneType {
32
33}
34
35pub fn get_message_type_as_str<T>() -> Option<String> {
36    let content_type = std::any::type_name::<T>();
37    let message_type;
38    if content_type == std::any::type_name::<NoneType>() {
39        message_type = None;
40    }
41    else {
42        let proper_type_name = content_type.rsplit_once("::").unwrap().1.to_string();
43        message_type = Some(proper_type_name);
44    }
45
46    return message_type;
47}