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程序员的基础。

相关推荐
嘵奇18 分钟前
Spring Boot中HTTP连接池的配置与优化实践
spring boot·后端·http
Bl_a_ck33 分钟前
【React】Craco 简介
开发语言·前端·react.js·typescript·前端框架
子燕若水37 分钟前
Flask 调试的时候进入main函数两次
后端·python·flask
编程有点难38 分钟前
Python训练打卡Day23
开发语言·python
程序员爱钓鱼39 分钟前
跳转语句:break、continue、goto -《Go语言实战指南》
开发语言·后端·golang·go1.19
hardStudy_h1 小时前
C程序的存储空间分配
c语言·开发语言
橙子199110161 小时前
Kotlin 中的 Unit 类型的作用以及 Java 中 Void 的区别
java·开发语言·kotlin
yours_Gabriel1 小时前
【登录认证】JWT令牌
java·开发语言·redis
lyw2056191 小时前
微服务八股(自用)
java·开发语言
dot to one1 小时前
Qt 中 QWidget涉及的常用核心属性介绍
开发语言·c++·qt