Understanding Rust Error E0536

Overview of Rust Error E0536

Rust Error E0536 is related to the scenarios where the not cfg-predicate is malformed. The error indicates that the configuration attribute (cfg) has been used incorrectly, specifically, with the 'not' keyword, and the expected pattern is not provided.

Erroneous code example:

#[cfg(not())] // error: expected 1 cfg-pattern
pub fn something() {}

pub fn main() {}

Correcting Rust Error E0536

To fix Rust Error E0536, the not predicate must be supplied with one cfg-pattern, which is the desired configuration attribute (cfg) that needs to be negated. For instance, the following code shows the correct usage of 'not' with the cfg attribute:

Correct code example:

#[cfg(not(target_os = "linux"))] // ok!
pub fn something() {}

pub fn main() {}

Additional Examples

In this section, a few more examples are provided to clarify the appropriate usage of 'not' in the cfg attribute and to demonstrate how to avoid Rust Error E0536.

Example 1:

#[cfg(not(feature = "example_feature"))]
fn example_feature_disabled() {}

pub fn main() {}

Example 2:

#[cfg(not(any(target_endian = "big", target_pointer_width = "32")))]
fn not_big_endian_and_32bit_pointer_width() {}

pub fn main() {}

Example 3:

#[cfg(not(all(unix, target_arch = "x86_64")))
fn not_unix_and_x86_64() {}

pub fn main() {}

Recommended Reading