3 releases (breaking)
Uses new Rust 2024
| 0.3.0 | Nov 8, 2025 |
|---|---|
| 0.2.0 | Nov 7, 2025 |
| 0.1.0 | Nov 6, 2025 |
#1279 in Network programming
25,685 downloads per month
Used in 49 crates
(4 directly)
22KB
485 lines
mac-addr

Lightweight, dependency-free, no_std compatible MAC address library
supporting both EUI-48 (MacAddr) and EUI-64 (MacAddr8).
Overview
It’s designed for portability and low-level use:
- no_std compatible
- Optional
allocfor string formatting - Optional
serdesupport for serialization and deserialization - Small, efficient, and FFI-safe
Usage
Add mac-addr to your dependencies
[dependencies]
mac-addr = "0.3"
Example
use mac_addr::{MacAddr, MacAddr8};
let mac6: MacAddr = "00:25:96:12:34:56".parse().unwrap();
assert_eq!(mac6.to_string(), "00:25:96:12:34:56");
// Convert EUI-48 -> EUI-64
let mac8 = MacAddr8::from_eui48(mac6);
assert_eq!(mac8.to_string(), "00:25:96:ff:fe:12:34:56");
// And back
assert_eq!(mac8.to_eui48().unwrap(), mac6);
For more details, see doc.
Features
| Feature | Default | Description |
|---|---|---|
std |
✅ | Use Rust standard library |
alloc |
⬜ | Enable heap allocation for MacAddr::address() |
serde |
⬜ | Add serde::Serialize / Deserialize implementations |
Dependencies
~160KB