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

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. Nginx 实现 HTTPS(基于 Let's Encrypt 的免费证书)

    SSL / TLS加密会为您的用户带来更高的搜索排名和更好的安全性. Let’s Encrypt 是一个认证机构(CA).它可以提供免费证书,并且已经被大多数浏览器所信任.另外,通过工具 Certbo ...

  2. MySql建库操作

    mysql创建数据库 create database db_namedefault character set utf8; db_name为数据库名 查看所有数据库 show databases; 查 ...

  3. SpringBoot入门系列(十二)统一日志收集

    前面介绍了Spring Boot 异常处理,不清楚的朋友可以看看之前的文章:https://www.cnblogs.com/zhangweizhong/category/1657780.html. 今 ...

  4. PAT 1032 Sharing (25分) 从自信到自闭

    题目 To store English words, one method is to use linked lists and store a word letter by letter. To s ...

  5. MVC案例之通过配置切换底层存储源(面向接口)

    1.深入理解面向接口编程: 在类中调用接口的方法,而不必关心具体的实现.这将有利于代码的解耦.使程序有更好的可移植性 和可扩展性 动态修改 Customer 的存储方式:通过修改类路径下的 switc ...

  6. 伪静态%{REQUEST_FILENAME} !-f 和!-d用法

    %{REQUEST_FILENAME} !-f 和!-d只对下一条RewriteRule起作用.再往下的RewriteRule不管用. -f  表示为文件 -d 表示为目录 ! 表示非,取反的意思 R ...

  7. Matlab GUI程序设计入门——信号发生器+时域分析

    背景:学习matlab gui编程入门,完成一个基于GUIDE的图形化界面程序,结合信号生成及分析等. 操作步骤: 1.新建程序 新建一个GUIDE程序 这里选择第一个选项,即创建一个空白的GUIDE ...

  8. GNS3内网通过cloud与实际网络实现互连互通的实验(使用环回网口)

    一.背景: 在GNS3内构建一个测试网络,该测试网络的设备能够通过cloud访问外部网络设备和Internet网,外部网络也能直接访问GNS3内网的设备. 考虑通过cloud上的环回口连接GNS3内网 ...

  9. xss(跨站脚本攻击)

    xss(跨站脚本攻击) 原理:攻击者可以通过在页面中注入恶意链接或者脚本代码,当受害者访问时,脚本代码会在其浏览器中执行,这个时候,我们可以获取当前用户的cookie或者进行重定向等操作. xss造成 ...

  10. ASP.NET中使用Entity Framework开发增删改查的Demo(EF增删改查+母版页的使用)

    这里更多的是当作随身笔记使用,记录一下学到的知识,以便淡忘的时候能快速回顾 这里是该项目的第二部分, 第一部分 第二部分(当前部分) 大完结版本 此Demo是新建了一个音乐类型的web,然后使用母版页 ...