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

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. SQL面试50题

    1.查询课程编号为“01”的课程比“02”的课程成绩高的所有学生的学号(重点) SELECT a.s_id,a.s_score FROM (') as a INNER JOIN (') as b on ...

  2. Intellij IDEA 2020.1.1 破解 永久有效 亲测100%成功

    申明:本教程 WebStorm 破解补丁.激活码均收集于网络,请勿商用,仅供个人学习使用,如有侵权,请联系作者删除. 前言 作为一个有强迫症的码农,怎么能忍受自己的开发工具跟不上潮流呢?笔者以前一直用 ...

  3. 洛谷 P1352 没有上司的舞会 树形DP板子

    luogu传送门 题目描述: 某大学有n个职员,编号为1~n. 他们之间有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的直接上司. 现在有个周年庆宴会,宴会每邀请来一个职员都会 ...

  4. DFA最小化

    1.将DFA最小化:教材P65 第9题 2.构造以下文法相应的最小的DFA S→ 0A|1B A→ 1S|1 B→0S|0 3.自上而下语法分析,回溯产生的原因是什么? 文法中,对于某个非终结符号的规 ...

  5. seo网站优化收录过少的病因分析-智狐seo顾问

    seo网站优化收录过少的病因分析 很多网站优化人员都了解,一个网站收录的重要性,企业网站要想可以在百度中占据一个良好的排名,获取的权重更高,那么网站收录自然就上去了,很多站长们在操作的过程中就会出现不 ...

  6. Java实现 LeetCode 448 找到所有数组中消失的数字

    448. 找到所有数组中消失的数字 给定一个范围在 1 ≤ a[i] ≤ n ( n = 数组大小 ) 的 整型数组,数组中的元素一些出现了两次,另一些只出现一次. 找到所有在 [1, n] 范围之间 ...

  7. NodeJS及路由

    1.基本介绍- http://nodejs.cn/api/ Node.js 是一个基于Chrome V8 引擎的JavaScript运行环境 Node.js使用了一个事件驱动.非阻塞式I/O的模型,使 ...

  8. 【Python源码剖析】对象模型概述

    Python 是一门 面向对象 语言,实现了一个完整的面向对象体系,简洁而优雅. 与其他面向对象编程语言相比, Python 有自己独特的一面. 这让很多开发人员在学习 Python 时,多少有些无所 ...

  9. sqlite使用dbexpress时数据库不存在自动建立数据库

    在发布使用delphi dbexpress编写的基于SQLITE的程序时,需要在运行时判断某个数据库是否存在,如果不存在,则自动建立. 方法有2,其中之一是判断数据库文件是否存在,如果不存在,则创建一 ...

  10. CSAPP 5 - 优化程序性能

    CSAPP 5 - 优化程序性能 1. 概述 首当其冲的,还是要编写出好的算法和数据结构,优化内部结构 其次才是编写出能让编译器 易优化的,高效的可执行代码.这点在特定的机器上可能有着特定的不同的优化 ...