Table B-1 에 러스트 연산자를 나열해 놓았습니다. 각 연산자가 컨텍스트 상에 나타나는 모습과 간단한 설명, 연산자 오버로드 가능 여부 및 오버로드 가능할 경우 사용할 수 있는 트레잇 순서로 이루어져 있습니다.
Table B-1: 연산자
| 연산자 | 예시 | 설명 | 오버로드 가능 여부 |
|---|---|---|---|
! |
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 |
*= |
var *= expr |
곱셈 후 대입 | MulAssign |
* |
*expr |
역 참조 | |
* |
*const type, *mut type |
Raw 포인터 | |
+ |
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 {...} |
loop 표식 | |
; |
expr; |
구문 및 요소 종결자 | |
; |
[...; len] |
고정 크기 배열 문법의 일부 | |
<< |
expr << expr |
좌측 쉬프트 연산 | Shl |
<<= |
var <<= expr |
좌측 쉬프트 연산 후 대입 | ShlAssign |
< |
expr < expr |
대소 비교 (소) | PartialOrd |
<= |
expr <= expr |
동등 및 대소 비교 (소) | PartialOrd |
= |
var = expr, ident = type |
대입/등가 | |
== |
expr == expr |
동등 비교 | PartialEq |
=> |
pat => expr |
갈래 문법의 일부 | |
> |
expr > expr |
대소 비교 (대) | PartialOrd |
>= |
expr >= expr |
동등 및 대소 비교 (대) | PartialOrd |
>> |
expr >> expr |
우측 쉬프트 연산 | Shr |
>>= |
var >>= expr |
우측 쉬프트 연산 후 대입 | ShrAssign |
@ |
ident @ pat |
패턴 바인딩 | |
^ |
expr ^ expr |
비트 단위 XOR 연산 | BitXor |
^= |
var ^= expr |
비트 단윈 XOR 연산 후 대입 | BitXorAssign |
| ` | ` | `pat | pat` |
| ` | ` | `expr | expr` |
| ` | =` | `var | = expr` |
| ` | ` | `expr | |
? |
expr? |
에러 전파 |
다음은 연산자와는 다르게 동작하는 (함수나 메소드를 호출했을 때 일어나는 현상과 유사하지 않다는 의미입니다) 문자 목록입니다.
Table B-2 에 다양한 곳에서 사용할 수 있는 기호를 나열해 놓았습니다.
Table B-2: 독립 문법
| 기호 | 설명 |
|---|---|
'ident |
라이프라임 지정 및 loop 표식 |
...u8, ...i32, ...f64, ...usize, 기타 등등 |
특정 타입 정수 리터럴 |
"..." |
스트링 리터럴 |
r"...", r#"..."#, r##"..."##, 기타 등등 |
Raw 스트링 리터럴, 이스케이프 문자를 처리하지 않음 |
b"..." |
바이트 스트링 리터럴; 문자열 대신 [u8] 이용 |
br"...", br#"..."#, br##"..."##, 기타 등등 |
Raw 바이트 스트링 리터럴, Raw 스트링과 바이트 스트링을 합친 것 |
'...' |
문자 리터럴 |
b'...' |
ASCII 바이트 리터럴 |
| ` | ... |
! |
함수 분기를 위해 존재하는 의미를 갖지 않는 빈 타입 |
_ |
"무시된" 패턴 바인딩; 정수 링터럴의 가독성을 높이는 데에도 사용됨 |
Table B-3 은 모듈 계층 구조의 경로를 나타내는 데 사용되는 기호를 나타냅니다.
Table 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(...) |
타입과 트레잇 이름을 이용해 메소드 호출을 명확화 |
Table B-4 는 제네릭 타입 매개변수로 사용되는 기호를 나타냅니다.
Table B-4: 제네릭
| 기호 | 설명 |
|---|---|
path<...> |
타입의 제네릭 매개변수 명시 (예시 Vec<u8>) |
path::<...>, method::<...> |
제네릭 타입, 함수, 메소드 등의 표현식에 매개변수 명시; turbofish 로도 불림 (예시 "42".parse::<i32>()) |
fn ident<...> ... |
제네릭 함수 정의 |
struct ident<...> ... |
제네릭 구조체 정의 |
enum ident<...> ... |
제네릭 열거체 정의 |
impl<...> ... |
제네릭 구현 정의 |
for<...> type |
고 랭크 라이프타임 제약 |
type<ident=type> |
하나 이상의 관련 타입에 특정 할당을 갖는 제네릭 타입 (예시 Iterator<Item=T>) |
Table B-5 은 트레잇을 이용해 제네릭 매개변수의 제약 조건을 설정하는 데 사용되는 기호를 나타냅니다.
Table B-5: 트레잇 제약 조건
| --- | --- |