码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 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 函数是在编译阶段执行的,因此相比普通函数有很多限制,并非所有的表达式和语句都可以在其中使用。

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

  • 相关阅读:
    C语言函数概述——拜佛代码
    力扣细节题:判断是否为平衡二叉树
    HTML5期末考核大作业,网站——青岛民俗 7页。 美丽家乡 学生旅行 游玩 主题住宿网页
    Racecar 基于ROS通信机制的多点导航实验
    MySQL中Binlog日志的使用
    2022年最新《谷粒学院开发教程》:12 - 项目完结篇
    LLM 构建Data Muti-Agents 赋能数据分析平台的实践之①:数据采集
    数据结构与算法-单向链表的修改和删除操作
    新课程发布 | 如何用 7 分钟击破 Serverless 落地难点?
    Hibernate 配置文件详解
  • 原文地址:https://blog.csdn.net/ysvae/article/details/126006742
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号