最小限の no_std プログラム

// Copyright 2023 Google LLC
// SPDX-License-Identifier: Apache-2.0

#![no_main]
#![no_std]

use core::panic::PanicInfo;

#[panic_handler]
fn panic(_panic: &PanicInfo) -> ! {
    loop {}
}
  • これは空のバイナリにコンパイルされます。
  • std は panic ハンドラを提供します。これがない場合は、自前で用意しなければなりません。
  • これは panic-halt などの別のクレートによって提供することもできます。
  • ターゲットによっては、eh_personality に関するエラーを回避するために、 panic = "abort" を指定してコンパイルする必要がある場合があります。
  • main やその他のエントリポイントは存在しないことに注意してください。独自の エントリポイントを自分で定義する必要があります。通常、これには Rust コードを 実行できる状態にするためのリンカースクリプトと、いくらかのアセンブリコードが関わります。