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() {}