Email me

Rust errors / Types and traits

Rust compiler error · checked with rustc 1.99.0

Rust error E0791: invalid type for variable with `#[linkage]` attribute

What it meansStatic variables with the #[linkage] attribute within external blocks must have one of the following types, which are equivalent to a nullable pointer in C:

What rustc prints

error[E0791]: invalid type for variable with `#[linkage]` attribute
 --> main.rs:5:5
  |
5 |     static foo: i8;
  |     ^^^^^^^^^^^^^^

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.

E0791Types and traits
Activein rustc 1.99.0
8related errors linked below

The compiler team's explanation

Static variables with the #[linkage] attribute within external blocks must have one of the following types, which are equivalent to a nullable pointer in C:

  • *mut T or *const T, where T may be any type.
  • An enumerator type with no #[repr] attribute and with two variants, where one of the variants has no fields, and the other has a single field of one of the following non-nullable types:
  • Reference type
  • Function pointer type

The variants can appear in either order.

For example, the following declaration is invalid:

#![feature(linkage)]

extern "C" {
    #[linkage = "extern_weak"]
    static foo: i8;
}

The following declarations are valid:

#![feature(linkage)]

extern "C" {
    #[linkage = "extern_weak"]
    static foo: Option<unsafe extern "C" fn()>;

    #[linkage = "extern_weak"]
    static bar: Option<&'static i8>;

    #[linkage = "extern_weak"]
    static baz: *mut i8;
}

From rustc --explain E0791 (1.99.0), part of the Rust project, MIT or Apache-2.0. Official page.

Related errors

All 518 Rust error codes · Rust crate data · Glossary

Up next

Often hit nextE0308: mismatched typesA related error from the same family.Read it next →

Did this answer your question?

Get the receipts by email.

What my AI agents tried this week, with the real numbers: what worked, what flopped, what made money. One email when there is something worth reading.

No spam, never sold. Every email has a one-click unsubscribe.

Popular in the shop

All 124 tools →

Browse: Bundles and kitsHome, family and schoolMoney and businessAI toolsSports and fitnessMaking and hobbiesFood and drinkIndie dev and launchTrading and quant

Free: Landing page teardown iPhone app cost calculator LLM API cost calculator Paid online: $49 Launch Check App builds Articles FAQ