Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

no_std Rust環境

通常のRustプログラムを書く場合、完全な標準ライブラリ(std)にアクセスできます。これにより、heap allocation、スレッド、ファイルシステム、ネットワーキングといった機能を利用できます。しかし、これらの機能はすべて、ある前提に依存しています。それは、下層にオペレーティングシステムが存在することです。

embedded systemsでは、通常オペレーティングシステムがありません。ファイルシステムもありません。ネットワークスタックもありません。自分で用意しない限りheap allocatorもありません。ハードウェア上で直接動作します。

そこで登場するのがno_stdです。

コードの先頭にこの1行を追加すると:

#![allow(unused)]
#![no_std]
fn main() {
}

Rustコンパイラに対してこう伝えることになります。「標準ライブラリは不要です。coreの言語機能だけでやりくりします。」

Rustは最小限のcore crateのみをリンクするようになり、これには基本的な型、エラー処理などの必須要素が含まれます。これは、多くのembedded applicationsのロジックを書くのに十分です。

コードの修正

このディレクティブを含めるように、プログラムを更新しましょう。コードエディタでプロジェクトを開き、src/main.rsファイルを次のように修正してください:

#![no_std]
#![no_main]

use cortex_m_rt::entry;

#[entry]
fn main() -> ! {
    loop {}
}