La libreria standard di Rust fornisce molte funzionalità utili, ma assume
che il sistema ospitante supporti varie caratteristiche: i thread, la rete,
l'allocazione su heap, e altre. Però, ci sono sistemi che non hanno
queste caratteristiche, e Rust può funzionare anche per tali sistemi!
Per farlo, diciamo a Rust che non vogliamo usare la libreria standard
tramite un attributo: #![no_std]
.
Nota: Questa caratteristica è tecnicamente stabile, ma ci sono alcune avvertenze. Per dirne una, con la versione stabile, si può costruire una libreria
#![no_std]
, ma non un programma. Per vedere i dettagli su come creare programmi senza la libreria standard, si veda il capitolo della versione notturna su#![no_std]
Per usare #![no_std]
, lo si aggiunga alla radice del proprio crate:
#![no_std] fn piu_uno(x: i32) -> i32 { x + 1 }
Molte delle funzionalità esposte nella libreria standard sono disponibili
anche tramire il crate core
. Quando usiamo
la libreria standard, Rust automaticamente porta std
nell'ambito corrente,
consentendo di usare le sue caratteristiche senza importazioni esplicite.
Per lo stesso motivo, quando si usa #![no_std]
, Rust porterà core
nell'ambito corrente, come pure il suo preludio. Ciò comporta che molto codice continuerà
a funzionare:
#![no_std] fn puo_fallire(fallimento: bool) -> Result<(), &'static str> { if fallimento { Err("non ha funzionato!") } else { Ok(()) } }