Rust操作符和符号全解析

Rust是一种系统编程语言,它的语法丰富而严谨,包括了一系列的操作符和符号。这些操作符和符号是构建Rust程序的基本元素,它们用于执行各种操作,如算术运算、逻辑比较、类型约束等。本文将详细介绍Rust中的操作符和符号,以及它们在代码中的使用方式。

Rust操作符

Rust中的操作符可以分为以下几类:

算术操作符

  • +:加法,例如expr + expr。
  • -:减法,例如expr - expr。
  • *:乘法,例如expr * expr。
  • /:除法,例如expr / expr。
  • %:取余,例如expr % expr。

这些操作符都支持重载,对应的特质(trait)分别是Add、Sub、Mul、Div和Rem。

赋值操作符

  • =:赋值,例如var = expr。
  • +=:加法赋值,例如var += expr。
  • -=:减法赋值,例如var -= expr。
  • *=:乘法赋值,例如var *= expr。
  • /=:除法赋值,例如var /= expr。
  • %=:取余赋值,例如var %= expr。

比较操作符

  • ==:相等比较,例如expr == expr。
  • !=:不等比较,例如expr != expr。
  • <:小于比较,例如expr < expr。
  • <=:小于等于比较,例如expr <= expr。
  • >:大于比较,例如expr > expr。
  • >=:大于等于比较,例如expr >= expr。

这些操作符都支持重载,对应的特质是PartialEq和PartialOrd。

逻辑操作符

  • &&:逻辑与,例如expr && expr。
  • ||:逻辑或,例如expr || expr。
  • !:逻辑非,例如!expr。

位操作符

  • &:位与,例如expr & expr。
  • |:位或,例如expr | expr。
  • ^:位异或,例如expr ^ expr。
  • ~:位非,例如!expr。
  • <<:左移,例如expr << expr。
  • >>:右移,例如expr >> expr。

这些操作符也支持重载,对应的特质是BitAnd、BitOr、BitXor、Shl和Shr。

解引用操作符

  • *:解引用,例如*expr。

范围操作符

  • ..:右排他性范围,例如..、expr..、..expr。
  • ..=:右包含性范围,例如..=expr、expr..=expr。

模式匹配操作符

  • @:模式绑定,例如ident @ pat。

宏和属性操作符

  • !:宏展开,例如ident!(...)、ident!{...}、ident![..]。
  • #:属性,例如#[meta]。

非操作符符号

除了操作符,Rust中还有一些独立的符号,它们在代码中扮演着重要的角色:

生命周期和路径相关符号

  • 'ident:命名生命周期或循环标签。
  • ::path:相对于crate根的路径。
  • self::path:相对于当前模块的路径。
  • super::path:相对于当前模块父模块的路径。

泛型和trait约束符号

  • <...>:泛型参数,例如Vec<u8>。
  • T: U:泛型参数T约束为实现U的类型。
  • T: 'a:泛型类型T必须比生命周期'a长。

宏和属性

  • #[meta]:外部属性。
  • #![meta]:内部属性。

注释符号

  • //:行注释。
  • ///:外部行文档注释。
  • /*...*/:块注释。

元组和花括号

  • ():空元组(单位元组)。
  • {...}:代码块表达式或结构体字面量。

方括号

  • []:数组字面量或集合索引。
  • [expr; len]:包含len个expr的数组字面量。

通过这些操作符和符号,Rust提供了强大的表达能力,使得程序员能够以精确和高效的方式编写系统级代码。掌握这些操作符和符号的用法,是成为一名Rust程序员的基础。

相关推荐
Wang's Blog2 小时前
Java 项目实战: 交友项目 - FastDFS:入门案例
java·开发语言·交友
一只爱撸猫的程序猿2 小时前
我看着一个 AI 引擎在 14 天里,从"记忆"走进了"搜索"
人工智能·后端·架构
apcipot_rain3 小时前
C++转Java日记(03)
java·开发语言·c++
布莱克6053 小时前
C++ 中 map 的 insert 与 emplace:key 已存在时会覆盖吗?
开发语言·数据结构·c++·算法·map
xys_6783 小时前
深挖C++:类和对象(中)
开发语言·c++
灿飞屋4 小时前
Rust 编程其实很简单
开发语言·rust
陈随易5 小时前
纯 Go 写的 JS 引擎,跑分超过了 C 语言的 QuickJS
前端·后端·程序员
MOONICK6 小时前
QT元数据
开发语言·qt
卷无止境6 小时前
RAGFlow 项目全景报告:从文档解析引擎到 Agent 原生数据库
后端·python
D e re k ZH6 小时前
C++ 系统学习手记:从语法细节到工程实践
开发语言·数据结构·c++·算法