Skip to main content

ddmw_types/node/
mod.rs

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// vim: set ft=rust et sw=2 ts=2 sts=2 cinoptions=2 tw=79 :