• Rust 从入门到精通07-函数


    1、函数简介

    ①、Rust 的函数使用关键字 fn 开头,函数名称使用snake case规范风格(所有字母小写并使用下划线分隔);

    ②、可以有一系列的输入参数,可以有一个返回值;

    ③、函数返回可以使用 return 语句,也可以使用表达式(末尾不带分号);

    ④、函数也可以不写返回类型,这种情况下,编译器会认为返回类型是unit();

    ⑤、可执行程序的入口是 fn main();

    ⑥、调用函数时,Rust不关心函数定义在哪(前后都无所谓),只要定义了就行;

    ⑦、Rust 函数体内可以定义其它模块,比如静态变量、常量、函数、trait、类型等。

    2、函数实例

    fn main() {
        let num = add(1,2);
        println!("{}",num)
    }
    
    fn add(x:i32,y:i32) -> i32{
        x+y
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    3、函数返回值

    需要注意语句和表达式的区别,表达式没有分号,有返回值。语句结尾有分号,没有返回值。

    所以对于如下函数,如果函数体加上分号,则会报错:

    fn add(x:i32,y:i32) -> i32{
        x+y;
    }
    
    • 1
    • 2
    • 3

    把 x+y; 变成表达式即可(去掉末尾的分号)。

    4、发散函数

    Rust 支持一种特殊的发散函数(Diverging functions),它的返回类型是感叹号 !。
    如果一个函数根本就不能正常返回,那么它就可以这样写:

    fn diverges() -> !{
        //panic! 会直接导致栈展开,所以这个函数调用后面的代码都不会执行,它的返回类型就是!
        panic!("函数不能返回");
    }
    
    • 1
    • 2
    • 3
    • 4

    发散函数的最大特点:可以被转换成任意一个类型。

    在Rust 中,有下列情况返回类型都是 !:

    1.panic! 以及基于它实现的各种函数/宏,比如unimplemented!、unreachable!
    2.死循环loop{}
    3.进程退出函数std::process::exit以及类似的libc 中的exec一类函数。

    5、const fn

    函数可以用 const 关键字修饰,这样的函数可以在编译阶段被编译器执行,返回值也被视为编译期常量。

    需要注意的是:const 函数是在编译阶段执行的,因此相比普通函数有很多限制,并非所有的表达式和语句都可以在其中使用。

    而且这个功能还没有完全稳定。

  • 相关阅读:
    一种跳板机的实现思路
    Springboot毕业设计毕设作品,网上图书销售系统设计与实现
    mybatisplus配置
    数字孪生3D智慧园区可视化能耗管控平台
    使用Verbs API剖析一个小型ib应用程序
    React native Navigation传值跳转小白教程
    2022牛客多校训练第二场 J题 Link with Arithmetic Progression
    9月9日扒面经
    计算机视觉:基于Numpy的图像处理技术(二):图像主成分分析(PCA)
    开发过程中那些包应该放到devDependencies,dependencies
  • 原文地址:https://blog.csdn.net/ysvae/article/details/126006742