Rustにおける記号の役割一覧

概要: Rustにおける記号の役割をできる限り列挙する。

ASCII制御文字部門

文字 役割
HT (水平タブ) 空白
LF (ラインフィード) 空白
文字列中の改行
バン #! や行コメント // の終わり
VT (垂直タブ) 空白
CR (キャリッジリターン) 空白
CRLFでLFと等価に振る舞う
それ以外のASCII制御文字 用途なし

ASCII印字可能文字部門

文字 役割
SP (スペース) 空白
! 内部doc-comment //!, /*!
内部属性 #![]
バン #!
不等号 !=
否定やビット反転 !x
否定実装 !Trait
マクロ呼び出しとマクロ定義 macro!
" 文字列 " r" r#"
バイト列 b" br" br#"
# 内部属性 #![]
外部属性 #[]
バン #!
生文字列/生バイト列のガード r#####" foo "#####
$ 宣言マクロの仮引数 $x:expr
宣言マクロの変数展開 $x
衛生的な絶対パス $crate
宣言マクロの繰り返し束縛と繰り返し展開 $($x:tt)* $($x),*
% 剰余 x % y x %= y
& 参照型 &T/&self
アドレス演算子 &x
参照外しパターン &p
論理積やビットごとの論理積 x & y x &= y
短絡回路論理積 x && y
' 文字 '
バイト b'
生存期間 'lt
( ) 式・パターン・型の優先度変更 (x)
タプル式・タプルパターン・タプル型 (x, y)
関数呼び出し・タプル構造体パターン・タプル構造体や列挙型のバリアントの定義・関数宣言の引数部 f(x, y)
メソッド呼び出し x.f(y, z)
typeof(x)
クロージャトレイト用型パラメータ Fn(u8) -> u8
pub(restricted)構文 pub(self)/pub(super)/pub(crate)/pub(in somewhere)
マクロ呼び出し・定義 macro!(..)
宣言マクロの腕 ( pat ) => ( tt )
宣言マクロの繰り返し束縛と繰り返し展開 $($x:tt)* $($x),*
トークンツリー
* ブロックコメント /* /** /*! とその終わり */
globインポート use somewhere::*;
生ポインタ型 *const T *mut T
参照外し *x
乗算 x * y x *= y
宣言マクロの繰り返し束縛と繰り返し展開 $($x:tt)* $($x),*
+ 境界の併記 T: Tr1 + Tr2 + 'a Box<Tr + Send + 'a>
加算 x + y x += y
宣言マクロの繰り返し束縛と繰り返し展開 $($x:tt)+ $($x),+
, リストインポート use std::{io, cmp};
ジェネリック引数 F<T1, T2> F(T1) -> T2
where節 where T: Tr1, S: Tr2
タプル式・タプルパターン・タプル型 (x, y)
列挙型 enum E { .. , .. }
関数呼び出し・タプル構造体パターン・タプル構造体や列挙型のバリアントの定義・関数宣言の引数部 f(x, y)
クロージャ |x, y| z
メソッド呼び出し x.f(y, z)
配列とスライスパターン [x, y]
レコード構造体や列挙型のバリアントの定義・構造体式と構造体パターン S { x, y }
パターンマッチ match .. { .. , .. }
- 戻り値 fn() -> T |x, y| -> T { .. }
配置構文 place <- expr
指数表記 1e-3
負号演算 -x
減算 x - y x -= y
. タプル・タプル構造体パターンの残り (x, y, .., z)
構造体式のデフォルト・構造体パターンの残り S { x .. y }
スライスパターンの残り [x, y, .., z]
既定実装 impl T for .. {}
C互換外部関数の可変長引数 fn f(x: u8, ...);
半開区間 x .. y .. y x .. ..
区間 x ... y
フィールド x.y
メソッド呼び出し x.f(y, z)
小数点 3.14
/ コメント /* */ //
除算 x / y x /= y
0-9 整数 0xF 080 0o42 0b11
浮動小数点数 0.33
識別子の一部 x0
タプル・タプル構造体のフィールド x.0 S { 0: x }
: パス区切り ::x::y
関連アイテム <T as Tr>::X X::default
ジェネリクス引数 T::f::<X>()
宣言マクロの仮引数 $x:expr
境界(ジェネリクス引数、スーパートレイト、where節、関連型) T<X: Clone>
型(let, const, static, 引数など) let x : T;
構造体式・パターンのフィールド S { x: y }
名前つきブロック 'a: loop { .. }
; アイテムの終わり type X = u32;
文の終わり let x = 0;
宣言マクロの腕の区切り macro_rules! { .. ; .. }
< ジェネリクス引数 T<X, Y>
配置構文 place <- expr
左シフト x << y x <<= y
不等号 x < y x <= y
= 属性 #[cfg(feature="foo")]
型引数の既定値 trait Tr<X=Self> {}
関連型束縛 Iterator<Item=i32>
等式境界 T == S T = S
関連型または型別名 type T = ();
列挙型の判別子 enum E { X = 100 }
const/staticの初期化 const X : i32 = 0;
let/if let/while let let x = 0;
代入 x = y
複合代入 += -= *= /= ^= &= |= >>= <<=
等号・不等号 == <= >= !=
パターンマッチの腕 pat => expr
宣言マクロの腕 pat => expansion
> ジェネリクス引数 T<X, Y>
戻り値 fn() -> T |x, y| -> T { .. }
右シフト x >> y x >>= y
不等号 x > y x >= y
パターンマッチの腕 pat => expr
宣言マクロの腕 pat => expansion
? 既定のSized境界の削除 T: ?Sized
try構文 File::open()?
@ 別名パターン x @ (y, z)
廃止されたmanaged box型の記法
A-F a-f 識別子の一部 Feed
16進数 0xC0FFEE
b については下も参照
b バイト・バイト列 b'x' b"Foo"
r 生文字列・生バイト列 br##"# # #"##
それ以外の英字 識別子の一部 Zoo
[ ] 内部属性 #![]
外部属性 #[]
配列型・スライス型 [T; 5] [T]
配列またはスライスパターン [x; 5] [x, y]
添字記法 x[i]
マクロ呼び出し・定義 macro![..]
宣言マクロの腕 [ pat ] => [ tt ]
トークンツリー
\ エスケープ \\ \t \n \r \" \' \0
1バイトエスケープ \x7F
Unicodeエスケープ \u{00007F}
改行エスケープ (\ + 改行 + 任意個の空白)
^ 排他的論理和・ビットごとの排他的論理和 x ^ y x ^= y
_ 識別子の一部 is_some
数値リテラルの区切り文字 1_000_000_000
型推論 Vec<_>
束縛しないパターン (_, x)
` 未使用 (字句解析されない)
{ } リストインポート use std::{io, cmp};
構造体、共用体、列挙型のバリアント、列挙型、トレイト、実装、モジュール、外部アイテム trait X { ... }
ブロック (関数定義、制御構造) loop { ... }
パターンマッチ
構造体式・構造体パターン
マクロ呼び出し・定義 macro!{..}
宣言マクロの腕 { pat } => { tt }
トークンツリー
| パターンの並列 pat1 | pat2 => expr
クロージャ |x, y| z
論理和・ビットごとの論理和 x | y x |= y
短絡回路論理和 x || y
~ 廃止されたowned box型の記法
現在は未使用

Unicode制御文字・特殊文字部門

文字 役割
NEL, LRM, RLM, LINE SEPARATOR, PARAGRAPH SEPARATOR 空白

Unicode印字可能文字部門

XID_Start, XID_Continue 属性のついている文字は識別子の一部と解釈される。