Thanks to visit codestin.com
Credit goes to doc.rust-lang.org

Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Function pointer types

Function pointer types, written using the fn keyword, refer to a function whose identity is not necessarily known at compile-time.

An example where Binop is defined as a function pointer type:

#![allow(unused)]
fn main() {
fn add(x: i32, y: i32) -> i32 {
    x + y
}

let mut x = add(5,7);

type Binop = fn(i32, i32) -> i32;
let bo: Binop = add;
x = bo(5,7);
}

Function pointers can be created via a coercion from both function items and non-capturing, non-async closures.

The unsafe qualifier indicates that the type’s value is an unsafe function, and the extern qualifier indicates it is an extern function.

For the function to be variadic, its extern ABI must be one of those listed in items.extern.variadic.conventions.

Attributes on function pointer parameters

Attributes on function pointer parameters follow the same rules and restrictions as regular function parameters.