Using Rust Without the Standard Library

Rust’s standard library provides a lot of useful functionality, but assumes
support for various features of its host system: threads, networking, heap
allocation, and others. There are systems that do not have these features,
however, and Rust can work with those too! To do so, we tell Rust that we
don’t want to use the standard library via an attribute: #![no_std].

Note: This feature is technically stable, but there are some caveats. For
one, you can build a #![no_std]library on stable, but not a binary.
For details on binaries without the standard library, see the nightly
chapter on #![no_std]

To use #![no_std], add a it to your crate root:

fn main() {
#![no_std]
fn plus_one(x: i32) -> i32 {
x + 1
}
}

#![no_std]fnplus_one(x: i32) ->i32 {
x+1
}

Much of the functionality that’s exposed in the standard library is also
available via the core crate. When we’re using the standard
library, Rust automatically brings std into scope, allowing you to use
its features without an explicit import. By the same token, when using
!#[no_std], Rust will bring core into scope for you, as well as its
prelude. This means that a lot of code will Just Work: