연산자

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....exprexpr..expr 상한을 제외한 범위 리터럴
.. ..expr 구조체 갱신법
.. variant(x, ..)struct_type { x, .. } “나머지” 패턴 바인딩
... expr...expr 상한을 포함한 범위 패턴 (패턴 내)
/ expr / expr 나누기 연산 Div
/= var /= expr 나누기 연산 후 대입 DivAssign
: pat: typeident: type 제약 조건
: ident: expr 구조체 필드 초기화
: 'a: loop {...} loop 표식
; expr; 구문 및 요소 종결자
; [...; len] 고정 크기 배열 문법의 일부
<< expr << expr 좌측 쉬프트 연산 Shl
<<= var <<= expr 좌측 쉬프트 연산 후 대입 ShlAssign
< expr < expr 대소 비교 (소) PartialOrd
<= expr <= expr 동등 및 대소 비교 (소) PartialOrd
= var = exprident = 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: 트레잇 제약 조건

| --- | --- |