ddmw_client/types/
node.rs1pub mod ddlnk;
4
5use std::fmt;
6use std::str::FromStr;
7
8use crate::err::Error;
9
10
11#[derive(Debug, PartialEq)]
14pub enum Type {
15 Sender,
17
18 Receiver
20}
21
22impl fmt::Display for Type {
23 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
24 let s = match self {
25 Type::Sender => "sender",
26 Type::Receiver => "receiver"
27 };
28 write!(f, "{}", s)
29 }
30}
31
32impl FromStr for Type {
33 type Err = Error;
34
35 fn from_str(s: &str) -> Result<Self, Self::Err> {
36 match s {
37 "sender" => Ok(Type::Sender),
38 "receiver" => Ok(Type::Receiver),
39 _ => Err(Error::BadInput(format!("Unknown server::Type '{}'", s)))
40 }
41 }
42}
43
44
45#[cfg(test)]
46mod tests {
47 use super::*;
48
49 #[test]
50 fn type_to_string() {
51 let t = Type::Sender;
52 let s = format!("{}", t);
53 assert_eq!(s, "sender");
54
55 let t = Type::Receiver;
56 let s = format!("{}", t);
57 assert_eq!(s, "receiver");
58 }
59
60 #[test]
61 fn string_to_type() {
62 let t = "sender".parse::<Type>().unwrap();
63 assert_eq!(t, Type::Sender);
64
65 let t = "receiver".parse::<Type>().unwrap();
66 assert_eq!(t, Type::Receiver);
67 }
68}
69
70