generic_robot_framework/models/
message.rs1use 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}