최소한의 no_std 프로그램

#![no_main]
#![no_std]

use core::panic::PanicInfo;

#[panic_handler]
fn panic(_panic: &PanicInfo) -> ! {
    loop {}
}
  • 이 코드는 빈 바이너리로 컴파일됩니다.
  • std는 패닉 핸들러를 제공하지만, 우리는 자체적으로 핸들러를 만들어야합니다.
  • 패닉 핸들러는 panic-halt와 같은 크레이트를 통해서 만들수도 있습니다.
  • 타겟에 따라 panic = "abort"로 컴파일해야 할 수 있습니다. 이는 eh_personality에 관한 오류를 방지하기 위함입니다.
  • main 과 같은 프로그램 진입점이 없습니다. 개발자가 자체적으로 진입점을 정의해야 합니다. 진입점을 정의하는 작업은, 일반적으로 링커 스크립트와 어셈블리 코드를 필요로 합니다.