最小限のno_stdプログラム

#![no_main]
#![no_std]

use core::panic::PanicInfo;

#[panic_handler]
fn panic(_panic: &PanicInfo) -> ! {
    loop {}
}
  • このコードは空のバイナリにコンパイルされます。
  • パニックハンドラはstdが提供するので、それを使わない場合は自分で提供する必要があります。
  • あるいは、panic-haltのような別のクレートが提供するパニックハンドラを利用することもできます。
  • ターゲットによっては、eh_personalityに関するエラーを回避するためにpanic = "abort"を指定してコンパイルする必要があります。
  • なお、mainのようなプログラムの規定エントリポイントはないので、自分でエントリポイントを定義する必要があります。通常、Rustコードを実行できるようにするためには、リンカスクリプトとある程度のアセンブリコードを必要とします。