# libcore for low-level Rust

Rust’s standard library is two-tiered: there’s a small core library, `libcore`, and the full standard library, `libstd`, that builds on top of it. `libcore` is completely platform agnostic, and requires only a handful of external symbols to be defined. Rust’s `libstd` builds on top of `libcore`, adding support for things like memory allocation and I/O. Applications using Rust in the embedded space, as well as those writing operating systems, often eschew `libstd`, using only `libcore`.

As an additional note, while building libraries with `libcore` is supported today, building full applications is not yet stable.

To use `libcore`, add this flag to your crate root:

    #![no_std]

This will remove the standard library, and bring the `core` crate into your namespace for use:

    #![no_std]

    use core::cell::Cell;

You can find `libcore`'s documentation here.