付録B: 演算子と記号
この付録は、演算子や、単独で現れたり、パス、ジェネリクス、トレイト境界、マクロ、属性、コメント、タプル、 かっこの文脈で現れる他の記号を含むRustの記法の用語集を含んでいます。
演算子
表B-1は、Rustの演算子、演算子が文脈で現れる例、短い説明、その演算子がオーバーロード可能かどうかを含んでいます。 演算子がオーバーロード可能ならば、オーバーロードするのに使用する関係のあるトレイトも列挙されています。
演算子 | 例 | 説明 | オーバーロードできる? |
---|---|---|---|
! | ident!(...) , ident!{...} , ident![...] | マクロ展開 | |
! | !expr | ビット反転、または論理反転 | Not |
!= | var != expr | 非等価比較 | PartialEq |
% | expr % expr | 余り演算 | Rem |
%= | var %= expr | 余り演算後に代入 | RemAssign |
& | &expr , &mut expr | 借用 | |
& | &type , &mut type , &'a type , &'a mut type | 借用されたポインタ型 | |
& | expr & expr | ビットAND | BitAnd |
&= | var &= expr | ビットAND後に代入 | BitAndAssign |
&& | expr && expr | 論理AND | |
* | expr * expr | 掛け算 | Mul |
* | *expr | 参照外し | |
* | *const type , *mut type | 生ポインタ | |
*= | var *= expr | 掛け算後に代入 | MulAssign |
+ | trait + trait , 'a + trait | 型制限の複合化 | |
+ | expr + expr | 足し算 | Add |
+= | var += expr | 足し算後に代入 | AddAssign |
, | expr, expr | 引数と要素の区別 | |
- | - expr | 算術否定 | Neg |
- | expr - expr | 引き算 | Sub |
-= | var -= expr | 引き算後に代入 | SubAssign |
-> | fn(...) -> type , |...| -> type | 関数とクロージャの戻り値型 | |
. | expr.ident | メンバーアクセス | |
.. | .. , expr.. , ..expr , expr..expr | 未満範囲リテラル | |
.. | ..expr | 構造体リテラル更新記法 | |
.. | variant(x, ..) , struct_type { x, .. } | 「残り全部」パターン束縛 | |
... | expr...expr | パターンで: 以下範囲パターン | |
/ | expr / expr | 割り算 | Div |
/= | var /= expr | 割り算後に代入 | DivAssign |
: | pat: type , ident: type | 型制約 | |
: | ident: expr | 構造体フィールド初期化子 | |
: | 'a: loop {...} | ループラベル | |
; | expr; | 文、要素終端子 | |
; | [...; len] | 固定長配列記法の一部 | |
<< | expr << expr | 左シフト | Shl |
<<= | var <<= expr | 左シフト後に代入 | ShlAssign |
< | expr < expr | 未満比較 | PartialOrd |
<= | expr <= expr | 以下比較 | PartialOrd |
= | var = expr , ident = type | 代入/等価 | |
== | expr == expr | 等価比較 | PartialEq |
=> | pat => expr | matchアーム記法の一部 | |
> | expr > expr | より大きい比較 | PartialOrd |
>= | expr >= expr | 以上比較 | PartialOrd |
>> | expr >> expr | 右シフト | Shr |
>>= | var >>= expr | 右シフト後に代入 | ShrAssign |
@ | ident @ pat | パターン束縛 | |
^ | expr ^ expr | ビットXOR | BitXor |
^= | var ^= expr | ビットXOR後に代入 | BitXorAssign |
| | pat | pat | パターンOR | |
| | |…| expr | クロージャ | |
| | expr | expr | ビットOR | BitOr |
|= | var |= expr | ビットOR後に代入 | BitOrAssign |
|| | expr || expr | 論理OR | |
? | expr? | エラー委譲 |
演算子以外のシンボル
以下のリストは、演算子として機能しない記号全部を含んでいます; つまり、関数やメソッド呼び出しのようには、 振る舞わないということです。
表B-2は、単独で出現し、いろんな箇所で合法になる記号を示しています。
シンボル | 説明 |
---|---|
'ident | 名前付きのライフタイム、あるいはループラベル |
...u8 , ...i32 , ...f64 , ...usize など | 特定の型の数値リテラル |
"..." | 文字列リテラル |
r"..." , r#"..."# , r##"..."## など | 生文字列リテラル、エスケープ文字は処理されません |
b"..." | バイト文字列リテラル、文字列の代わりに[u8] を構築します |
br"..." , br#"..."# , br##"..."## など | 生バイト文字列リテラル、生文字列とバイト文字列の組み合わせ |
'...' | 文字リテラル |
b'...' | ASCIIバイトリテラル |
|...| expr | クロージャ |
! | 常に発散関数の空のボトム型 |
_ | 「無視」パターン束縛: 整数リテラルを見やすくするのにも使われる |
表B-3は、要素へのモジュール階層を通したパスの文脈で出現する記号を示しています。
シンボル | 説明 |
---|---|
ident::ident | 名前空間パス |
::path | クレートルートに相対的なパス(すなわち、明示的な絶対パス) |
self::path | 現在のモジュールに相対的なパス(すなわち、明示的な相対パス) |
super::path | 現在のモジュールの親モジュールに相対的なパス |
type::ident , <type as trait>::ident | 関連定数、関数、型 |
<type>::... | 直接名前付けできない型の関連要素(例, <&T>::... , <[T]>::... など) |
trait::method(...) | 定義したトレイトを名指ししてメソッド呼び出しを明確化する |
type::method(...) | 定義されている型を名指ししてメソッド呼び出しを明確化する |
<type as trait>::method(...) | トレイトと型を名指ししてメソッド呼び出しを明確化する |
表B-4は、ジェネリックな型引数の文脈で出現する記号を示しています。
シンボル | 説明 |
---|---|
path<...> | 型の内部のジェネリック型への引数を指定する(例、Vec<u8> ) |
path::<...> , method::<...> | 式中のジェネリックな型、関数、メソッドへの引数を指定する。しばしばターボ・フィッシュ(turbofish)と称される。(例、"42".parse::<i32>() ) |
fn ident<...> ... | ジェネリックな関数を定義する |
struct ident<...> ... | ジェネリックな構造体を定義する |
enum ident<...> ... | ジェネリックな列挙型を定義する |
impl<...> ... | ジェネリックな実装を定義する |
for<...> type | 高階ライフタイム境界 |
type<ident=type> | 1つ以上の関連型に代入されたジェネリックな型(例、Iterator<Item=T> ) |
表B-5は、ジェネリック型引数をトレイト境界で制約する文脈で出現する記号を示しています。
シンボル | 説明 |
---|---|
T: U | U を実装する型に制約されるジェネリック引数T |
T: 'a | ライフタイム'a よりも長生きしなければならないジェネリック型T (型がライフタイムより長生きするとは、'a よりも短いライフタイムの参照を何も遷移的に含められないことを意味する) |
T : 'static | ジェネリック型T が'static なもの以外の借用された参照を何も含まない |
'b: 'a | ジェネリックなライフタイム'b がライフタイム'a より長生きしなければならない |
T: ?Sized | ジェネリック型引数が動的サイズ決定型であることを許容する |
'a + trait , trait + trait | 複合型制約 |
表B-6は、マクロの呼び出しや定義、要素に属性を指定する文脈で出現する記号を示しています。
シンボル | 説明 |
---|---|
#[meta] | 外部属性 |
#![meta] | 内部属性 |
$ident | マクロ代用 |
$ident:kind | マクロキャプチャ |
$(…)… | マクロの繰り返し |
表B-7は、コメントを生成する記号を示しています。
シンボル | 説明 |
---|---|
// | 行コメント |
//! | 内部行docコメント |
/// | 外部行docコメント |
/*...*/ | ブロックコメント |
/*!...*/ | 内部ブロックdocコメント |
/**...*/ | 外部ブロックdocコメント |
タプル
表B-8は、タプルの文脈で出現する記号を示しています。
シンボル | 説明 |
---|---|
() | 空のタプル (ユニットとしても知られる)、リテラル、型両方 |
(expr) | 括弧付きの式 |
(expr,) | 1要素タプル式 |
(type,) | 1要素タプル型 |
(expr, ...) | タプル式 |
(type, ...) | タプル型 |
expr(expr, ...) | 関数呼び出し式; タプルstruct やタプルenum 列挙子を初期化するのにも使用される |
ident!(...) , ident!{...} , ident![...] | マクロ呼び出し |
expr.0 , expr.1 , など | タプル添え字アクセス |
表B-9は、波括弧が使用される文脈を表示しています。
文脈 | 説明 |
---|---|
{...} | ブロック式 |
Type {...} | struct リテラル |
表B-10は、角括弧が使用される文脈を表示しています。
文脈 | 説明 |
---|---|
[...] | 配列リテラル |
[expr; len] | len 個expr を含む配列リテラル |
[type; len] | len 個のtype のインスタンスを含む配列型 |
expr[expr] | コレクション添え字アクセス。オーバーロード可能 (Index , IndexMut ) |
expr[..] , expr[a..] , expr[..b] , expr[a..b] | Range 、RangeFrom 、RangeTo 、RangeFull を「添え字」として使用してコレクション・スライシングの振りをするコレクション添え字アクセス |