`embedded-storage` logo

`embedded-storage`

Free

An Embedded Storage Abstraction Layer

FreeFree tier
Type
Open Source
Company
rust-embedded-community

About `embedded-storage`

embedded-storage is an open-source Rust crate that defines a set of traits providing an abstraction layer for non-volatile storage. It supports various memory technologies including EEPROM, NOR-flash, NAND-flash, and both external and internal storage. The crate is part of the rust-embedded-community ecosystem and is designed for embedded systems development. It includes an API reference, a contribution guide for adding new traits, and is dual-licensed under Apache-2.0 and MIT. The minimum supported Rust version (MSRV) is 1.50.0. The repository hosts the core traits library and a separate async variant (embedded-storage-async).

Key Features

Defines a set of traits for non-volatile storage abstraction
Supports EEPROM, NOR-flash, NAND-flash, external and internal memory
Provides an API reference and how-to guide for adding new traits
Minimum supported Rust version (MSRV) 1.50.0
Dual-licensed under Apache-2.0 and MIT
Community-driven with clear contribution process (discussion, demonstration, proposal)
Async variant available via embedded-storage-async

Pros & Cons

Pros
  • Hardware abstraction for a wide range of memory types (EEPROM, NOR, NAND, etc.)
  • Community-governed with transparent trait addition process
  • Dual licensing (Apache 2.0 and MIT) offers flexibility
  • Well-documented API reference and contribution guidelines
  • Stable MSRV policy ensures compatibility
Cons
  • Only defines traits, not actual driver implementations (requires separate implementations)
  • Limited to Rust and embedded systems use cases
  • Requires Rust 1.50.0 or later
  • Niche audience: primarily for embedded Rust developers

Best For

Implementing storage drivers for embedded systems in RustAbstracting access to different non-volatile memory technologiesBuilding portable firmware for microcontrollers with varying storage typesRust embedded development requiring a standardized storage interface

FAQ

What is embedded-storage?
embedded-storage is a Rust crate that defines a set of traits for abstracting non-volatile storage, such as EEPROM, NOR-flash, NAND-flash, and external/internal memory. It is part of the rust-embedded-community.
What memory types does embedded-storage support?
It includes traits for EEPROM, NOR-flash, NAND-flash, and both external and internal non-volatile storage.
How can I add a new trait to embedded-storage?
The project suggests a process: first, discuss in an issue labeled 'discussion', then implement and demonstrate the trait (possibly in a fork or separate crate), and finally open a pull request with a 'proposal' label for merging.
What is the minimum supported Rust version?
The crate is guaranteed to compile on stable Rust 1.50.0 and up. Older versions may work but are not guaranteed.
What license does embedded-storage use?
It is dual-licensed under Apache License 2.0 and MIT License, at your option.