当前位置:网站首页>Rust从入门到精通06-函数
Rust从入门到精通06-函数
2022-08-11 08:16:00 【51CTO】
1、函数简介
①、Rust 的函数使用关键字 fn 开头,函数名称使用snake case规范风格(所有字母小写并使用下划线分隔);
②、可以有一系列的输入参数,可以有一个返回值;
③、函数返回可以使用 return 语句,也可以使用表达式(末尾不带分号);
④、函数也可以不写返回类型,这种情况下,编译器会认为返回类型是unit();
⑤、可执行程序的入口是 fn main();
⑥、调用函数时,Rust不关心函数定义在哪(前后都无所谓),只要定义了就行;
⑦、Rust 函数体内可以定义其它模块,比如静态变量、常量、函数、trait、类型等。
2、函数实例
3、函数返回值
需要注意语句和表达式的区别,表达式没有分号,有返回值。语句结尾有分号,没有返回值。
所以对于如下函数,如果函数体加上分号,则会报错:
把 x+y; 变成表达式即可(去掉末尾的分号)。
4、发散函数
Rust 支持一种特殊的发散函数(Diverging functions),它的返回类型是感叹号 !。 如果一个函数根本就不能正常返回,那么它就可以这样写:
发散函数的最大特点:可以被转换成任意一个类型。
在Rust 中,有下列情况返回类型都是 !:
1.panic! 以及基于它实现的各种函数/宏,比如unimplemented!、unreachable! 2.死循环loop{} 3.进程退出函数std::process::exit以及类似的libc 中的exec一类函数。
5、const fn
函数可以用 const 关键字修饰,这样的函数可以在编译阶段被编译器执行,返回值也被视为编译期常量。
需要注意的是:const 函数是在编译阶段执行的,因此相比普通函数有很多限制,并非所有的表达式和语句都可以在其中使用。
而且这个功能还没有完全稳定。
边栏推荐
- Getting Started with Kotlin Algorithms Calculating Prime Factors
- kali渗透测试环境搭建
- 【C语言】每日一题,求水仙花数,求变种水仙花数
- string类接口介绍及应用
- 兼容并蓄广纳百川,Go lang1.18入门精炼教程,由白丁入鸿儒,go lang复合容器类型的声明和使用EP04
- golang string manipulation
- 机器学习(二)线性回归
- The growth path of a 40W test engineer with an annual salary, which stage are you in?
- Kotlin算法入门计算质因数
- CIKM 2022 AnalytiCup Competition: Federal Heterogeneous Task Learning
猜你喜欢
magical_spider远程采集方案
The softmax function is used in TF;
囍楽cloud task source code
【云原生】云原生在网络安全领域的应用
软件测试常用工具的用途及优缺点比较(详细)
Distributed Lock-Redission - Cache Consistency Solution
go-grpc TSL authentication solution transport: authentication handshake failed: x509 certificate relies on ... ...
【LeetCode】链表题解汇总
oracle数据库中列转行,列会有变化
leetcode: 69. Square root of x
随机推荐
3.2 - classification - Logistic regression
你有对象类,我有结构体,Go lang1.18入门精炼教程,由白丁入鸿儒,go lang结构体(struct)的使用EP06
IQUNIX A80 exploring TTC金粉 初体验
流式结构化数据计算语言的进化与新选择
一根网线两台电脑传输文件
进阶-指针
Notable NFT development trends in 2022
C语言操作符详解
go 操作MySQL之mysql包
剑指offer专项突击版第26天
3.1-Classification-probabilistic generative model
抽象类和接口
JUC并发编程
About # SQL problem: how to set the following data by commas into multiple lines, in the form of column display
Analysys and the Alliance of Small and Medium Banks jointly released the Hainan Digital Economy Index, so stay tuned!
Two startup methods and differences of Service
2022-08-10:为了给刷题的同学一些奖励,力扣团队引入了一个弹簧游戏机, 游戏机由 N 个特殊弹簧排成一排,编号为 0 到 N-1, 初始有一个小球在编号 0 的弹簧处。若小球在编号为 i 的弹
leetcode:69. x 的平方根
Kotlin算法入门计算素数以及优化
Decrement operation in tf; tf.assign_sub()