use crate::*; /// Payload of an IP packet. #[derive(Clone, Debug, Eq, PartialEq, Hash, PartialOrd, Ord)] pub struct EtherPayloadSlice<'a> { /// Identifying content of the payload. pub ether_type: EtherType, /// Payload pub payload: &'a [u8], } #[cfg(test)] mod test { use super::*; use alloc::format; #[test] fn debug() { let s = EtherPayloadSlice { ether_type: EtherType::IPV4, payload: &[], }; assert_eq!( format!( "EtherPayloadSlice {{ ether_type: {:?}, payload: {:?} }}", s.ether_type, s.payload ), format!("{:?}", s) ); } #[test] fn clone_eq_hash_ord() { let s = EtherPayloadSlice { ether_type: EtherType::IPV4, payload: &[], }; assert_eq!(s.clone(), s); use std::collections::hash_map::DefaultHasher; use std::hash::{Hash, Hasher}; let a_hash = { let mut hasher = DefaultHasher::new(); s.hash(&mut hasher); hasher.finish() }; let b_hash = { let mut hasher = DefaultHasher::new(); s.clone().hash(&mut hasher); hasher.finish() }; assert_eq!(a_hash, b_hash); use std::cmp::Ordering; assert_eq!(s.clone().cmp(&s), Ordering::Equal); assert_eq!(s.clone().partial_cmp(&s), Some(Ordering::Equal)); } }