rust学习-rust中的保留字

rust学习-rust中的保留字

  • 已使用的保留字
  • 未来可能使用的保留字

保留字是语言中预定义的标识符,不能用作变量名、函数名或其他自定义标识符,Rust的保留字大致可以分为两类:已使用的保留字和未来可能使用的保留字

已使用的保留字

  1. as:用于类型转换
let num: i32 = 5;
let float_num = num as f64;
  1. break:用于终止循环
loop {println!("再次循环");break;
}
  1. const:用于定义常量
const MAX_POINTS: u32 = 100_000;
  1. continue:用于跳过当前循环的剩余部分并开始下一次迭代
for i in 0..10 {if i % 2 == 0 {continue;}println!("奇数: {}", i);
}
  1. crate:用于指定 crate 根模块
// 在 Cargo.toml 中定义 crate
// Cargo.toml
[package]
name = "my_crate"
version = "0.1.0"
  1. dyn:用于动态分发的 trait 对象
trait Draw {fn draw(&self);
}struct Rectangle;impl Draw for Rectangle {fn draw(&self) {println!("绘制矩形");}
}fn draw_item(item: &dyn Draw) {item.draw();
}let rectangle = Rectangle;
draw_item(&rectangle);
  1. else:用于条件语句中的 if 之后的分支
let x = 5;
if x == 5 {println!("x 是 5");
} else {println!("x 不是 5");
}
  1. enum:用于定义枚举类型
enum Color {Red,Green,Blue,
}let color = Color::Red;
  1. extern:用于定义外部函数或链接外部库
extern "C" {fn printf(format: *const u8, ...) -> i32;
}fn main() {unsafe {printf(b"Hello, World!\0".as_ptr());}
}
  1. false:布尔常量,表示假
let is_false = false;
  1. fn:用于定义函数
fn add(a: i32, b: i32) -> i32 {a + b
}let sum = add(5, 3);
  1. for:用于循环
for i in 0..3 {println!("i: {}", i);
}
  1. if:用于条件语句
let x = 5;
if x > 0 {println!("x 是正数");
}
  1. impl:用于实现方法或 trait
struct Point {x: i32,y: i32,
}impl Point {fn new(x: i32, y: i32) -> Point {Point { x, y }}fn distance(&self, other: &Point) -> f64 {(((self.x - other.x).pow(2) + (self.y - other.y).pow(2)) as f64).sqrt()}
}let p1 = Point::new(0, 0);
let p2 = Point::new(3, 4);
println!("距离: {}", p1.distance(&p2));
  1. in:用于 for 循环或 match 语句
for i in 0..3 {println!("i: {}", i);
}match 2 {1 => println!("一是 1"),2 => println!("二是 2"),_ => println!("其他"),
}
  1. let:用于声明变量
let x = 5;
let y: i32 = 10;
  1. loop:用于无限循环
loop {println!("再次循环");break;
}
  1. match:用于模式匹配
let x = 2;
match x {1 => println!("一是 1"),2 => println!("二是 2"),_ => println!("其他"),
}
  1. mod:用于定义模块
mod my_module {pub fn say_hello() {println!("Hello from my_module!");}
}fn main() {my_module::say_hello();
}
  1. move:用于闭包捕获环境
let x = 5;
let y = 10;let closure = move || {println!("x: {}, y: {}", x, y);
};closure();
  1. mut:用于声明可变变量
let mut x = 5;
x = 10;
  1. pub:用于声明公共项
pub fn public_function() {println!("这是公共函数");
}mod my_mod {pub fn public_function() {println!("这是 my_mod 中的公共函数");}
}
  1. ref:用于在模式匹配中获取引用
let x = 5;
let ref_x = &x;match ref_x {ref r => println!("r 是引用: {:?}", r),
}
  1. return:用于从函数返回值
fn add(a: i32, b: i32) -> i32 {return a + b;
}let sum = add(5, 3);
  1. self:用于表示当前实例
struct Point {x: i32,y: i32,
}impl Point {fn new(x: i32, y: i32) -> Self {Point { x, y }}fn distance_from_origin(&self) -> f64 {(self.x.pow(2) + self.y.pow(2)) as f64}
}let p = Point::new(3, 4);
println!("距离原点: {}", p.distance_from_origin());
  1. Self:用于表示当前类型的自身
struct Point {x: i32,y: i32,
}impl Point {fn new(x: i32, y: i32) -> Self {Self { x, y }}
}let p = Point::new(3, 4);
  1. static:用于定义静态变量
static X: i32 = 5;fn main() {println!("X: {}", X);
}
  1. struct:用于定义结构体
struct Point {x: i32,y: i32,
}let p = Point { x: 3, y: 4 };
  1. super:用于访问父模块
mod outer {pub fn outer_fn() {println!("outer_fn");}mod inner {pub fn inner_fn() {super::outer_fn();println!("inner_fn");}}
}fn main() {outer::inner::inner_fn();
}
  1. trait:用于定义 trait

trait(特性)是一种定义共享行为的方式,它类似于其他编程语言中的接口(interface),但更加灵活和强大,trait可定义一组方法签名,这些方法可以在不同的类型中实现,通过这种方式,Rust能够实现多态性,并确保类型安全

trait Draw {fn draw(&self);
}struct Rectangle;impl Draw for Rectangle {fn draw(&self) {println!("绘制矩形");}
}fn draw_item(item: &impl Draw) {item.draw();
}let rectangle = Rectangle;
draw_item(&rectangle);
  1. true:布尔常量,表示真
let is_true = true;
  1. type:用于定义类型别名
type Kilometers = i32;let distance: Kilometers = 5;
  1. unsafe:用于编写不安全的代码
unsafe fn dangerous() {println!("这是不安全的代码");
}fn main() {unsafe {dangerous();}
}
  1. use:用于引入模块
mod my_mod {pub fn say_hello() {println!("Hello from my_mod!");}
}use my_mod::say_hello;fn main() {say_hello();
}
  1. where:用于指定 trait 约束
fn some_func<T: std::fmt::Display>(t: T) where T: std::fmt::Debug {println!("t: {:?}", t);
}fn main() {some_func(5);
}

未来可能使用的保留字

  1. abstract
  2. become
  3. box
  4. do
  5. final
  6. macro
  7. override
  8. priv
  9. typeof
  10. unsized
  11. virtual
  12. yield

这些保留字目前在 Rust 中没有具体的用途,但它们被预留以备将来扩展语言时使用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/9994.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

手撕Diffusion系列 - 第十一期 - lora微调 - 基于Stable Diffusion(代码)

手撕Diffusion系列 - 第十一期 - lora微调 - 基于Stable Diffusion&#xff08;代码&#xff09; 目录 手撕Diffusion系列 - 第十一期 - lora微调 - 基于Stable Diffusion&#xff08;代码&#xff09;Stable Diffusion 原理图Stable Diffusion的原理解释Stable Diffusion 和Di…

vscode+WSL2(ubuntu22.04)+pytorch+conda+cuda+cudnn安装系列

最近在家过年闲的没事&#xff0c;于是研究起深度学习开发工具链的配置和安装&#xff0c;之前欲与天公试比高&#xff0c;尝试在win上用vscodecuda11.6vs2019的cl编译器搭建cuda c编程环境&#xff0c;最后惨败&#xff0c;沦为笑柄&#xff0c;痛定思痛&#xff0c;这次直接和…

【ESP32】ESP-IDF开发 | WiFi开发 | TCP传输控制协议 + TCP服务器和客户端例程

1. 简介 TCP&#xff08;Transmission Control Protocol&#xff09;&#xff0c;全称传输控制协议。它的特点有以下几点&#xff1a;面向连接&#xff0c;每一个TCP连接只能是点对点的&#xff08;一对一&#xff09;&#xff1b;提供可靠交付服务&#xff1b;提供全双工通信&…

AI时序预测: iTransformer算法代码深度解析

在之前的文章中&#xff0c;我对iTransformer的Paper进行了详细解析&#xff0c;具体文章如下&#xff1a; 文章链接&#xff1a;深度解析iTransformer&#xff1a;维度倒置与高效注意力机制的结合 今天&#xff0c;我将对iTransformer代码进行解析。回顾Paper&#xff0c;我…

某盾Blackbox参数参数逆向

以前叫同盾&#xff0c;现在改名了&#xff0c;叫小盾安全&#xff0c;好像不做验证码了

docker中运行的MySQL怎么修改密码

1&#xff0c;进入MySQL容器 docker exec -it 容器名 bash 我运行了 docker ps命令查看。正在运行的容器名称。可以看到MySQL的我起名为db docker exec -it db bash 这样就成功的进入到容器中了。 2&#xff0c;登录MySQL中 mysql -u 用户名 -p 回车 密码 mysql -u root -p roo…

春节期间,景区和酒店如何合理用工?

春节期间&#xff0c;景区和酒店如何合理用工&#xff1f; 春节期间&#xff0c;旅游市场将迎来高峰期。景区与酒店&#xff0c;作为旅游产业链中的两大核心环节&#xff0c;承载着无数游客的欢乐与期待。然而&#xff0c;也隐藏着用工管理的巨大挑战。如何合理安排人力资源&a…

初始化mysql报错cannot open shared object file: No such file or directory

报错展示 我在初始化msyql的时候报错&#xff1a;mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory 解读&#xff1a; libaio包的作用是为了支持同步I/O。对于数据库之类的系统特别重要&#xff0c;因此…

C语言------数组从入门到精通

1.一维数组 目标:通过思维导图了解学习一维数组的核心知识点: 1.1定义 使用 类型名 数组名[数组长度]; 定义数组。 // 示例&#xff1a; int arr[5]; 1.2一维数组初始化 数组的初始化可以分为静态初始化和动态初始化两种方式。 它们的主要区别在于初始化的时机和内存分配的方…

Docker/K8S

文章目录 项目地址一、Docker1.1 创建一个Node服务image1.2 volume1.3 网络1.4 docker compose 二、K8S2.1 集群组成2.2 Pod1. 如何使用Pod(1) 运行一个pod(2) 运行多个pod 2.3 pod的生命周期2.4 pod中的容器1. 容器的生命周期2. 生命周期的回调3. 容器重启策略4. 自定义容器启…

【开源免费】基于SpringBoot+Vue.JS公交线路查询系统(JAVA毕业设计)

本文项目编号 T 164 &#xff0c;文末自助获取源码 \color{red}{T164&#xff0c;文末自助获取源码} T164&#xff0c;文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…

< OS 有关 > Android 手机 SSH 客户端 app: connectBot

connectBot 开源且功能齐全的SSH客户端,界面简洁,支持证书密钥。 下载量超 500万 方便在 Android 手机上&#xff0c;连接 SSH 服务器&#xff0c;去运行命令。 Fail2ban 12小时内抓获的 IP ~ ~ ~ ~ rootjpn:~# sudo fail2ban-client status sshd Status for the jail: sshd …

中国股市“慢牛”行情的实现路径与展望

在现代经济体系中&#xff0c;股市不仅是企业融资的重要平台&#xff0c;也是投资者财富增值的关键渠道。一个健康、稳定、持续增长的股市&#xff0c;对于推动经济高质量发展、提升国家金融竞争力具有深远意义。近年来&#xff0c;“慢牛”行情成为众多投资者和市场参与者对我…

Linux Samba 低版本漏洞(远程控制)复现与剖析

目录 前言 漏洞介绍 漏洞原理 产生条件 漏洞影响 防御措施 复现过程 结语 前言 在网络安全的复杂生态中&#xff0c;系统漏洞的探索与防范始终是保障数字世界安全稳定运行的关键所在。Linux Samba 作为一款在网络共享服务领域应用极为广泛的软件&#xff0c;其低版本中…

ResNet 残差网络

目录 网络结构 残差块&#xff08;Residual Block&#xff09; ResNet网络结构示意图 残差块&#xff08;Residual Block&#xff09;细节 基本残差块&#xff08;ResNet-18/34&#xff09; Bottleneck残差块&#xff08;ResNet-50/101/152&#xff09; 残差连接类型对比 变体网…

【Unity3D】实现横版2D游戏角色二段跳、蹬墙跳、扶墙下滑

目录 一、二段跳、蹬墙跳 二、扶墙下滑 一、二段跳、蹬墙跳 GitHub - prime31/CharacterController2D 下载工程后直接打开demo场景&#xff1a;DemoScene&#xff08;Unity 2019.4.0f1项目环境&#xff09; Player物体上的CharacterController2D&#xff0c;Mask添加Wall层…

FPGA 使用 CLOCK_LOW_FANOUT 约束

使用 CLOCK_LOW_FANOUT 约束 您可以使用 CLOCK_LOW_FANOUT 约束在单个时钟区域中包含时钟缓存负载。在由全局时钟缓存直接驱动的时钟网段 上对 CLOCK_LOW_FANOUT 进行设置&#xff0c;而且全局时钟缓存扇出必须低于 2000 个负载。 注释&#xff1a; 当与其他时钟约束配合…

Excel 技巧21 - Excel中整理美化数据实例,Ctrl+T 超级表格(★★★)

本文讲Excel中如何整理美化数据的实例&#xff0c;以及CtrlT 超级表格的常用功能。 目录 1&#xff0c;Excel中整理美化数据 1-1&#xff0c;设置间隔行颜色 1-2&#xff0c;给总销量列设置数据条 1-3&#xff0c;根据总销量设置排序 1-4&#xff0c;加一个销售趋势列 2&…

Leetcode:219

1&#xff0c;题目 2&#xff0c;思路 第一种就是简单的暴力比对当时过年没细想 第二种&#xff1a; 用Map的特性key唯一&#xff0c;把数组的值作为Map的key值我们每加载一个元素都会去判断这个元素在Map里面存在与否如果存在进行第二个判断条件abs(i-j)<k,条件 符合直接…

MySQL(高级特性篇) 14 章——MySQL事务日志

事务有4种特性&#xff1a;原子性、一致性、隔离性和持久性 事务的隔离性由锁机制实现事务的原子性、一致性和持久性由事务的redo日志和undo日志来保证&#xff08;1&#xff09;REDO LOG称为重做日志&#xff0c;用来保证事务的持久性&#xff08;2&#xff09;UNDO LOG称为回…