# Rust allocator backed by ESP-IDF This is a memory allocator for Rust, backed by the [ESP-IDF](https://docs.espressif.com/projects/esp-idf/en/latest/). This is intended to be used on an ESP32, linked against the ESP-IDF. For more information see: * https://github.com/ctron/rust-esp-container/ * https://github.com/ctron/rust-esp-template * https://github.com/MabezDev/rust-xtensa.git * https://quickhack.net/nom/blog/2019-05-14-build-rust-environment-for-esp32.html ## Usage Add the following to your main, application project: ~~~rust extern crate esp_idf_alloc; #[global_allocator] static A: esp_idf_alloc::EspIdfAllocator = esp_idf_alloc::EspIdfAllocator; ~~~ ### Error handler If you use a custom global allocator in your application, you will also need an error handler. The following code will use the ESP-IDF `abort()` method to handle the error: ~~~rust #![feature(alloc_error_handler)] use core::alloc::Layout; extern "C" { fn abort() -> !; } #[alloc_error_handler] fn alloc_error(_layout: Layout) -> ! { unsafe { abort(); } } ~~~ ## Using with `alloc` Also be sure to link in the `alloc` create, as you might want this. Add the following to your `Xargo.toml`: ~~~toml [target.xtensa-esp32-none-elf.dependencies] alloc={} ~~~