Rust操作符和符号全解析

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

Rust操作符

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

算术操作符

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

这些操作符都支持重载,对应的特质(trait)分别是AddSubMulDivRem

赋值操作符

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

比较操作符

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

这些操作符都支持重载,对应的特质是PartialEqPartialOrd

逻辑操作符

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

位操作符

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

这些操作符也支持重载,对应的特质是BitAndBitOrBitXorShlShr

解引用操作符

  • *:解引用,例如*expr

范围操作符

  • ..:右排他性范围,例如..expr....expr
  • ..=:右包含性范围,例如..=exprexpr..=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程序员的基础。

相关推荐
virus59455 小时前
悟空CRM mybatis-3.5.3-mapper.dtd错误解决方案
java·开发语言·mybatis
初次见面我叫泰隆6 小时前
Qt——3、常用控件
开发语言·qt·客户端
计算机毕设VX:Fegn08956 小时前
计算机毕业设计|基于springboot + vue蛋糕店管理系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
没差c7 小时前
springboot集成flyway
java·spring boot·后端
三水不滴7 小时前
Redis 过期删除与内存淘汰机制
数据库·经验分享·redis·笔记·后端·缓存
无小道7 小时前
Qt——QWidget
开发语言·qt
时艰.7 小时前
Java 并发编程之 CAS 与 Atomic 原子操作类
java·开发语言
梵刹古音7 小时前
【C语言】 函数基础与定义
c语言·开发语言·算法
笨蛋不要掉眼泪7 小时前
Spring Boot集成LangChain4j:与大模型对话的极速入门
java·人工智能·后端·spring·langchain
梵刹古音7 小时前
【C语言】 结构化编程与选择结构
c语言·开发语言·嵌入式