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