Keyword auto-imported

extern

Source: compiler/src/builtin_docs/keywords.md

Binds C functions from a native library at compile time: extern "lib" { fn …; }.

Each declaration is a signature ending in ;, called like an ordinary function. The compiler loads the library and declares the functions for you, panicking with a clear message if that fails. A trailing bare ... marks C varargs. The library stem is gated like ffi::dload: the build needs --allow-dload STEM, and the run a --dload-pin or --dload-trusted for it; extern "c" (libc) is always denied. extern struct Name { … }; declares a C struct passed by value.

extern "sum" {
    fn sum(int a, int b) -> int;
    fn sum_n(int n, ...) -> int;
}

fn main() {
    let n = sum(40, 2);
}

See also#

  • ffi::dload
  • fn: Declares a function, a method, or (written in an expression) an anonymous function.
  • let: Declares a mutable local variable.
  • const: Declares a binding that cannot be reassigned: a local, a module constant, or a class field that is set only by new.
  • static: Declares a module-level or class-level slot shared by the whole program, or a method without self.
  • readonly: A read-only view of a value: nothing reachable through it can be changed.
  • if: Runs a block when a bool condition is true.
  • else: Introduces the branch of an if that runs when its condition is false (or its pattern does not match).
↑ ↓ navigate ↵ open