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