1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
//! This crate provides types for a [MAC address] identifiers, //! both in IEEE *EUI-48* and *EUI-64* formats. //! //! It is like a `std::net::SocketAddr` enum //! with `std::net::SocketAddrV4` and `std::net::SocketAddrV6` members, //! but for MAC addresses instead. //! //! Obviously, MAC address can be represented as a `[u8; 6]` or `[u8; 8]`, //! but it is error-prone and inconvenient, so here they are — //! [MacAddr6] and [MacAddr8] structs with helpful methods and //! standard Rust traits implementations to make them first-class //! Rust objects. //! //! ## Serde support //! //! [Serde] support can be enabled with a `"serde_std"` feature //! (disabled by default) if used in `std`-enabled builds. //! //! This feature is called like this because of [this Cargo bug].\ //! `"serde"` feature is exists also, but it is intended to be used //! in the `no_std` builds. //! //! ## No-std support //! //! This crate can be used in a `no_std` builds with //! disabled `"std"` feature (enabled by default). //! //! Enabled `"serde"` feature will add support for `no_std` //! serde serialization and deserialization. //! //! [Serde]: https://serde.rs //! [MAC address]: https://en.wikipedia.org/wiki/MAC_address //! [this Cargo bug]: https://github.com/rust-lang/cargo/issues/3494 //! [MacAddr6]: struct.MacAddr6.html //! [MacAddr8]: struct.MacAddr8.html #![cfg_attr(not(feature = "std"), no_std)] #![doc(html_root_url = "https://docs.rs/macaddr/1.0.0")] #![forbid(unsafe_code)] mod addr; mod addr6; mod addr8; mod parser; pub use self::addr::MacAddr; pub use self::addr6::MacAddr6; pub use self::addr8::MacAddr8; pub use self::parser::ParseError;