use crate::*;
#[derive(Clone, Debug, Eq, PartialEq)]
pub enum TransportSlice<'a> {
Icmpv4(Icmpv4Slice<'a>),
Icmpv6(Icmpv6Slice<'a>),
Udp(UdpSlice<'a>),
Tcp(TcpSlice<'a>),
}
#[cfg(test)]
mod test {
use super::*;
use crate::{TcpHeader, UdpHeader};
use alloc::{format, vec::Vec};
#[test]
fn debug_clone_eq() {
{
let header: UdpHeader = Default::default();
let raw = header.to_bytes();
let u = UdpSlice::from_slice(&raw).unwrap();
let slice = TransportSlice::Udp(u.clone());
assert_eq!(slice.clone(), slice);
assert_eq!(format!("{:?}", slice), format!("Udp({:?})", u));
}
{
let header: TcpHeader = Default::default();
let buffer = {
let mut buffer = Vec::with_capacity(header.header_len() as usize);
header.write(&mut buffer).unwrap();
buffer
};
let t = TcpSlice::from_slice(&buffer).unwrap();
let slice = TransportSlice::Tcp(t.clone());
assert_eq!(slice.clone(), slice);
assert_eq!(format!("{:?}", slice), format!("Tcp({:?})", t));
}
}
}