• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /// Errors when setting the next header IP number.
2 #[derive(Clone, Debug, Eq, PartialEq, Hash)]
3 pub enum NetSetNextHeaderError {
4     /// It is possible to set the ip_number in an ARP header.
5     ArpHeader,
6 }
7 
8 impl core::fmt::Display for NetSetNextHeaderError {
fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result9     fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
10         use NetSetNextHeaderError::*;
11         match self {
12             ArpHeader => write!(
13                 f,
14                 "It is not possible to set the payload 'IP number' for an ARP header."
15             ),
16         }
17     }
18 }
19 
20 #[cfg(feature = "std")]
21 #[cfg_attr(docsrs, doc(cfg(feature = "std")))]
22 impl std::error::Error for NetSetNextHeaderError {
source(&self) -> Option<&(dyn std::error::Error + 'static)>23     fn source(&self) -> Option<&(dyn std::error::Error + 'static)> {
24         None
25     }
26 }
27 
28 #[cfg(test)]
29 mod tests {
30     use super::*;
31     use alloc::format;
32     use std::{
33         collections::hash_map::DefaultHasher,
34         error::Error,
35         hash::{Hash, Hasher},
36     };
37 
38     #[test]
debug()39     fn debug() {
40         assert_eq!(
41             "ArpHeader",
42             format!("{:?}", NetSetNextHeaderError::ArpHeader)
43         );
44     }
45 
46     #[test]
clone_eq_hash()47     fn clone_eq_hash() {
48         let err = NetSetNextHeaderError::ArpHeader;
49         assert_eq!(err, err.clone());
50         let hash_a = {
51             let mut hasher = DefaultHasher::new();
52             err.hash(&mut hasher);
53             hasher.finish()
54         };
55         let hash_b = {
56             let mut hasher = DefaultHasher::new();
57             err.clone().hash(&mut hasher);
58             hasher.finish()
59         };
60         assert_eq!(hash_a, hash_b);
61     }
62 
63     #[test]
fmt()64     fn fmt() {
65         assert_eq!(
66             "It is not possible to set the payload 'IP number' for an ARP header.",
67             format!("{}", NetSetNextHeaderError::ArpHeader)
68         );
69     }
70 
71     #[cfg(feature = "std")]
72     #[test]
source()73     fn source() {
74         let values = [NetSetNextHeaderError::ArpHeader];
75         for v in values {
76             assert!(v.source().is_none());
77         }
78     }
79 }
80