Keyword fn

source ·
Expand description

一个函数或函数指针。

函数是在 Rust 中执行代码的主要方式。通常称为函数的函数块可以在各种不同的位置定义,并分配有许多不同的属性和修饰符。

仅位于未附加任何模块的模块中的独立函数是常见的,但是大多数函数最终将最终位于 impl 块中,或者位于另一种类型本身上,或者作为该类型的 trait 隐式实现。

fn standalone_function() {
    // code
}

pub fn public_thing(argument: bool) -> String {
    // code
}

struct Thing {
    foo: i32,
}

impl Thing {
    pub fn new() -> Self {
        Self {
            foo: 42,
        }
    }
}
Run

除了以 fn name(arg: type, ..) -> return_type 形式显示固定类型外,函数还可以声明类型参数列表以及它们所属的 trait bounds。

fn generic_function<T: Clone>(x: T) -> (T, T, T) {
    (x.clone(), x.clone(), x.clone())
}

fn generic_where<T>(x: T) -> T
    where T: std::ops::Add<Output = T> + Copy
{
    x + x + x
}
Run

在尖括号中声明 trait bounds 在功能上与使用 where 子句相同。 由程序员决定在每种情况下哪种效果更好,但是当事情长于一行时,where 往往会更好。

除了通过 pub 公开之外,fn 还可以添加 extern 以用于 FFI。

有关各种类型的函数以及如何使用它们的更多信息,请查阅 Rust 书Reference