esp-idf-alloc 0.1.0

Allocator for ESP-IDF
Documentation
# 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={}
~~~