Error code E0736

Functions marked with the #[naked] attribute are restricted in what other attributes they may be marked with.

Notable attributes that are incompatible with #[naked] are:

  • #[inline]
  • #[track_caller]
  • #[test], #[ignore], #[should_panic]

Erroneous code example:

#![allow(unused)]
fn main() {
#[inline]
#[naked]
fn foo() {}
}

These incompatibilities are due to the fact that naked functions deliberately impose strict restrictions regarding the code that the compiler is allowed to produce for this function.