netlink_rust/core/
hardware_address.rs

1use std::fmt;
2
3/// HardwareAddress is an eight octet identifier used for example as the
4/// MAC address for Ethernet (802.3), Bluetooth or Wi-Fi (802.11)
5#[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)]
6pub struct HardwareAddress {
7    value: [u8; 6],
8}
9
10impl HardwareAddress {
11	pub fn bytes(&self) -> [u8; 6] {
12		self.value.clone()
13	}
14}
15
16impl fmt::Display for HardwareAddress {
17	fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
18		write!(f, "{:02x}:{:02x}:{:02x}:{:02x}:{:02x}:{:02x}",
19			self.value[0], self.value[1], self.value[2],
20			self.value[3], self.value[4], self.value[5])
21	}
22}
23
24impl<'a> From<&'a [u8]> for HardwareAddress {
25	fn from(value: &'a [u8]) -> HardwareAddress {
26		HardwareAddress {
27			value: [value[0], value[1], value[2], value[3], value[4], value[5]]
28		}
29	}
30}
31
32impl From<[u8; 6]> for HardwareAddress {
33	fn from(value: [u8; 6]) -> HardwareAddress {
34		HardwareAddress {
35			value: [value[0], value[1], value[2], value[3], value[4], value[5]]
36		}
37	}
38}