当前位置:网站首页>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 函数是在编译阶段执行的,因此相比普通函数有很多限制,并非所有的表达式和语句都可以在其中使用。
而且这个功能还没有完全稳定。
边栏推荐
- Kotlin算法入门求完全数
- 研发了 5 年的时序数据库,到底要解决什么问题?
- 3.2 - classification - Logistic regression
- 1076 Wifi Password (15 points)
- 基于微信小程序的租房小程序
- go-grpc TSL authentication solution transport: authentication handshake failed: x509 certificate relies on ... ...
- 2022年值得关注的NFT发展趋势
- 对比学习系列(三)-----SimCLR
- Kotlin算法入门计算素数以及优化
- leetcode:69. x 的平方根
猜你喜欢
Analysis of the Status Quo of Enterprise Server Host Reinforcement
About # SQL problem: how to set the following data by commas into multiple lines, in the form of column display
9、Neural Sparse Voxel Fields
查找最新人员工资和上上次人员工资的变动情况
Mysql JSON对象和JSON数组查询
Machine Learning Summary (2)
1076 Wifi Password (15 points)
CSDN21天学习挑战赛——封装(06)
IQUNIX A80 exploring TTC金粉 初体验
1036 Programming with Obama (15 points)
随机推荐
LoRa芯片的特征
Kotlin Algorithm Getting Started with Rabbit Number Optimization and Expansion
【LeetCode】链表题解汇总
分门别类输入输出,Go lang1.18入门精炼教程,由白丁入鸿儒,go lang基本数据类型和输入输出EP03
轻量级网络(一):MobileNet V1,V2, V3系列
【43. 字符串相乘】
3.2 - classification - Logistic regression
About # SQL problem: how to set the following data by commas into multiple lines, in the form of column display
你有对象类,我有结构体,Go lang1.18入门精炼教程,由白丁入鸿儒,go lang结构体(struct)的使用EP06
Project 1 - PM2.5 Forecast
9、Neural Sparse Voxel Fields
The growth path of a 40W test engineer with an annual salary, which stage are you in?
go 操作MySQL之mysql包
IQUNIX A80 exploring TTC金粉 初体验
迷你图书馆系统(对象+数组)
用 Antlr 重构脚本解释器
C语言-结构体
Getting Started with Kotlin Algorithms Calculating Prime Factors
【BM87 合并两个有序的数组】
软件测试常用工具的用途及优缺点比较(详细)