// the find
esp-rs/esp-idf-hal
embedded-hal implementation for Rust on ESP32 and ESP-IDF
Safe Rust wrappers over ESP-IDF's C drivers for ESP32 chips — GPIO, SPI, I2C, UART, RMT, I2S, and more. Targets developers who want `std` Rust on ESP32 rather than bare-metal `no_std`. If you're reaching for an ESP32 and want idiomatic Rust without hand-rolling FFI, this is the starting point.
Implements both embedded-hal 0.2 and 1.0 trait sets, so it works with the existing ecosystem of sensor drivers without choosing sides. The peripheral coverage is genuinely wide — RMT with custom encoders, I2S with PDM/TDM modes, PCNT, sleep modes, USB serial — not just the obvious ones. Async support is being added driver by driver rather than bolted on all at once, which keeps the blocking path stable while async matures. The examples directory is unusually complete: NeoPixel over RMT, rotary encoder via PCNT, SSD1306 over I2C, ST7789 over SPI — real hardware patterns, not toy blinks.
Community-maintained with explicitly minimal Espressif paid developer time, so it can lag behind ESP-IDF stable releases and bug fixes depend on volunteer bandwidth. No HIL (hardware-in-the-loop) tests — CI likely builds but doesn't run on real silicon, which means regressions can ship undetected. If you want Espressif's officially supported path, that's esp-hal (no_std, async-first), which has different tradeoffs but actual corporate backing. The async story is still incomplete; which drivers have async and which don't is discoverable only by reading source, not from the docs.