当前,以下关键字具有所描述的功能。

as-执行原始类型转换,消除包含项目的特定特征的歧义,或在useand extern crate语句中重命名项目
async-返回a Future而不是阻塞当前线程
await-暂停执行直到a的结果Future准备好
break -立即退出循环
const -定义常量项目或常量原始指针
continue -继续进行下一个循环迭代
crate -链接一个外部板条箱或一个宏变量,该变量代表定义宏的板条箱
dyn -动态分配给特征对象
else-回退if并if let控制流程构造
enum -定义一个枚举
extern -链接外部板条箱,函数或变量
false -布尔型假文字
fn -定义函数或函数指针类型
for -循环遍历迭代器中的项目,实现特征或指定更高级别的生存期
if -根据条件表达式的结果进行分支
impl -实现固有或特征功能
in- for循环语法的一部分
let -绑定变量
loop -无条件循环
match -将值匹配到模式
mod -定义一个模块
move -使封包对其所有捕获物拥有所有权
mut -表示引用,原始指针或模式绑定中的可变性
pub-表示结构字段,impl块或模块中的公共可见性
ref -通过引用绑定
return -从函数返回
Self -我们正在定义或实现的类型的类型别名
self -方法主题或当前模块
static -持续整个程序执行的全局变量或生命周期
struct -定义一个结构
super -当前模块的父模块
trait -定义一个特征
true -布尔值真实文字
type -定义类型别名或关联的类型
unsafe -表示不安全的代码,功能,特征或实现
use -将符号纳入范围
where -表示约束类型的子句
while -根据表达式的结果有条件地循环
保留以备将来使用的关键字
以下关键字没有任何功能,但被Rust保留,以备将来使用。

abstract
become
box
do
final
macro
override
priv
try
typeof
unsized
virtual
yield
原始标识符
原始标识符是一种语法,可让您在通常不允许使用的关键字中使用关键字。您可以通过在关键字前面加上来使用原始标识符r#。

例如,match是一个关键字。如果尝试编译使用以下函数match作为其名称的函数:

文件名:src / main.rs

fn match(needle: &str, haystack: &str) -> bool {
haystack.contains(needle)
}
您将收到此错误:

error: expected identifier, found keyword `match`
--> src/main.rs:4:4
|
4 | fn match(needle: &str, haystack: &str) -> bool {
| ^^^^^ expected identifier, found keyword
该错误表明您不能将关键字match用作功能标识符。要将其match用作函数名,您需要使用原始标识符语法,如下所示:

文件名:src / main.rs

fn r#match(needle: &str, haystack: &str) -> bool {
haystack.contains(needle)
}

fn main() {
assert!(r#match("foo", "foobar"));
}
此代码将编译而没有任何错误。请注意r#函数名称在其定义中的前缀以及在中调用该函数的位置main。

原始标识符允许您使用选择的任何单词作为标识符,即使该单词恰好是保留关键字。另外,原始标识符使您可以使用以与包装箱不同的Rust版本编写的库。例如,try不是2015年版的关键字,而是2018年版的关键字。如果您依赖使用2015版编写的并且具有try功能的库,则r#try在这种情况下,需要使用原始标识符语法从2018版代码中调用该函数

rust 学习之旅二,关键字和保留字的更多相关文章

  1. 滴滴Booster移动APP质量优化框架 学习之旅 二

    推荐阅读: 滴滴Booster移动App质量优化框架-学习之旅 一 Android 模块Api化演练 不一样视角的Glide剖析(一) 续写滴滴Booster移动APP质量优化框架学习之旅,上篇文章分 ...

  2. Hadoop学习之旅二:HDFS

    本文基于Hadoop1.X 概述 分布式文件系统主要用来解决如下几个问题: 读写大文件 加速运算 对于某些体积巨大的文件,比如其大小超过了计算机文件系统所能存放的最大限制或者是其大小甚至超过了计算机整 ...

  3. 我的AngularJS 学习之旅(二)

    记得某位大神说过,"时间就像海绵里的水,挤挤总是有的.".大多时候,与其说我是很忙而没时间去做自己想做的事, 倒不如说是懒得去做罢了. 废话不多说,接前一篇继续吧 3.3 指令(D ...

  4. artDialog学习之旅(二)之扩展方法详解

    名称 描述 核心方法 art.dialog.top 获取artDialog可用最高层window对象.这与直接使用window.top不同,它能排除artDialog对象不存在已经或者顶层页面为框架集 ...

  5. 我的Go语言学习之旅二:入门初体验 Hello World

    好吧,全部的程序猿们都已经习惯了.学习不论什么一门语言,我们都会以Hello World实例開始我们的学习,我也不例外.先来一个简单的样例 打开编辑器 (能够用记事本,我已经习惯 Notepad++了 ...

  6. dotnet Core学习之旅(二):安装IDE

    [重要:文中所有外链不能确保永久有效] >开发工具 高效的开发必然需要一个优秀的集成开发环境(IDE) 对于.NET Core 2.x可以使用包括但不限于以下IDE来进行开发. Visual S ...

  7. rust 学习之旅一, rust编程环境相关

    Mac rust环境 rust安装: curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh rust更新: rustup upd ...

  8. [原创] zabbix学习之旅二:yum安装

    对于允许连接公网的环境下,显然通过yum安装是最为简单方便的,也是官网推荐的安装方式.通过这种方式安装,会将php.apache.zabbix本身都一并安装,解决了烦人的依赖包问题.   本文将介绍如 ...

  9. Spring学习之旅(二)--容器

    在 Spring 应用中,所有的对象都在 Spring 容器(container) 里,容器负责对象的创建.配置.装配并管理它们的整个生命周期. Spring 容器 Spring 容器 并不是只有一个 ...

随机推荐

  1. Elasticsearch SSL认证/证书制作

    制作目的 在上一篇<elasticsearch7.X x-pack破解>中,我们启用了x-pack模块,elasticsearch集群中,如果使用了x-pack,那么集群中的各节点之间通讯 ...

  2. mybatis的多表联查

    多对一连表查询简单记录

  3. 在Cent OS云服务器上部署基于TP5后端代码踩坑记录_艾孜尔江撰

    推荐使用镜像安装Cent OS系统,或者在纯净安装完成之后在完成Apache+MySQL+PHP的时候不要每个单独安装,因为这样会出一些三者之间版本不配的问题,网上各种说法都有,查起来也非常困难,版本 ...

  4. Network Motif 文献调研

    Network Motif 文献调研 概述:Network motifs,可以认为是网络中频繁出现的子图模式,是复杂网络的"构建块".有两篇发表在science上的论文给出moti ...

  5. DC-8靶机writeup

    nmap -sV 172.16.61.129 -A 看下端口信息 nid=1 ‘ 报错,存在注入,扔到sqlmap跑 sqlmap -u http://172.16.61.129/?nid=1 --d ...

  6. Activity组件暴露导致本地拒绝服务

    这几天团队打算一起学习Android App漏洞挖掘方面的知识,于是乎拿了一个app当测试例子,争取在上面找到漏洞.在学习过程中发现Android四大组件的安全性还是占有较大的比重,另外比较关心的是数 ...

  7. Java实现 洛谷 P1008 三连击

    public class Main { public static void main(String[] args){ for(int i = 123; i <= 329; i++){ int[ ...

  8. java实现第六届蓝桥杯切开字符串

    切开字符串 Pear有一个字符串,不过他希望把它切成两段. 这是一个长度为N(<=10^5)的字符串. Pear希望选择一个位置,把字符串不重复不遗漏地切成两段,长度分别是t和N-t(这两段都必 ...

  9. Linux 系统定时任务

    crond服务管理与访问控制 启动 service crond restart 开机自启动 chkconfig crond on 用户的crontab设置 crontab [选项],其中 -e :编辑 ...

  10. 原声js数组去重方法

    数组去重方法 方法一 ---- 利用数组filter + indexOf方法去重 方法二 ---- 利用数组forEach + indexOf方法去重 方法三 ---- 利用数组from方法 + Se ...