Rust errors / Const, static and compile-time
Rust compiler error · checked with rustc 1.99.0
Rust error E0757: `#[ffi_const]` function cannot be `#[ffi_pure]`
What it meansA function was given both the ffi_const and ffi_pure attributes.
What rustc prints
error[E0757]: `#[ffi_const]` function cannot be `#[ffi_pure]`
--> main.rs:5:5
|
5 | #[unsafe(ffi_pure)]
| ^^^^^^^^^^^^^^^^^^^Real output of rustc 1.99.0 compiling the official example below (2021 edition). Your names and line numbers will differ; the first line is the part to match.
The compiler team's explanation
A function was given both the ffi_const and ffi_pure attributes.
Erroneous code example:
#![feature(ffi_const, ffi_pure)]
extern "C" {
#[unsafe(ffi_const)]
#[unsafe(ffi_pure)]
//~^ ERROR `#[ffi_const]` function cannot be `#[ffi_pure]`
pub fn square(num: i32) -> i32;
}
As ffi_const provides stronger guarantees than ffi_pure, remove the ffi_pure attribute:
#![feature(ffi_const)]
extern "C" {
#[unsafe(ffi_const)]
pub fn square(num: i32) -> i32;
}
You can get more information about const and pure in the GCC documentation on Common Function Attributes. The unstable Rust Book has more information about ffi_const and ffi_pure.
From rustc --explain E0757 (1.99.0), part of the Rust project, MIT or Apache-2.0. Official page.
Related errors
Up next
Often hit nextE0015: cannot call non-const fn in constantsA related error from the same family.Read it next →Did this answer your question?