Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

용어집

용어의미
1-ZST1로 정렬된 크기가 0인 타입입니다. 크기가 0이고 정렬이 1인 타입입니다.
abby바인더에 대한 가정(assumptions on binders)의 약어입니다. a-bi라고 쓰기도 하지만, 이는 ABI와 매우 비슷합니다.
아레나, 아레나 할당아레나는 다른 메모리 할당이 이루어지는 큰 메모리 버퍼입니다. 이러한 방식의 할당을 아레나 할당이라고 합니다. 자세한 내용은 이 장을 참조하십시오.
AFIDTdyn Trait 안의 async 함수의 약어입니다. AFIT도 참조하십시오.
AFIT트레이트 안의 async 함수(async function in trait)의 약어입니다. 이는 RPITIT로 디슈가링됩니다.
AST파서가 생성하는 추상 구문 트리(IR의 일종)로, 표면 구문, 즉 사용자가 작성한 구문을 매우 가깝게 반영합니다.
APIT인자 위치 impl Trait의 약어입니다. (존재적인 것과 대비되는) 보편적 impl Trait 또는 익명 타입 매개변수라고도 합니다. (레퍼런스를 참조하십시오).
ATPIT연관 타입 위치 impl Trait의 약어입니다. ITIAT라고도 합니다.
바인더바인더는 변수나 타입이 선언되는 위치입니다. 예를 들어 fn foo<T>(..)에서 <T>는 타입 매개변수 T의 바인더이고, for<'a>는 라이프타임 매개변수 'a의 바인더이며, |a| …는 매개변수 a의 바인더입니다. 자세한 내용은 배경 장을 참조하십시오.
본문“실행 가능한 코드“를 포함하는 함수 또는 상수의 정의입니다.
BodyId크레이트 안의 특정 본문(body)을 가리키는 식별자입니다. 자세한 내용은 HIR 장을 참고하십시오.
바운드 변수바운드 변수는 (일반적인 의미에서) 표현식이나 항 내부에서 선언된 변수입니다. 예를 들어, 변수 a는 클로저 표현식 |a| a * 2 안에서 바인딩되고, 라이프타임 변수 'a는 타입 표현식 for<'a> fn(&'a str) -> bool 안에서 바인딩됩니다. 자세한 내용은 배경 지식 장을 참고하십시오.
코드 생성(codegen)코드 생성(code generation)의 줄임말입니다. MIR을 LLVM IR로 변환하는 코드입니다.
코드 생성 단위(codegen unit)LLVM IR을 생성할 때 Rust 코드를 여러 개의 코드 생성 단위(CGU로 줄여 부르기도 합니다)로 묶습니다. 각 단위는 LLVM이 서로 독립적으로 처리하므로 병렬 처리가 가능합니다. 코드 생성 단위는 증분 재사용의 단위이기도 합니다. (자세히 보기)
완전성(completeness)타입 이론의 전문 용어로, 타입 안전한 모든 프로그램이 타입 검사도 통과한다는 뜻입니다. 건전성과 완전성을 모두 갖추기는 매우 어려우며, 보통은 건전성이 더 중요합니다. (“건전성(soundness)” 항목을 참고하십시오.)
제어 흐름 그래프(control-flow graph, CFG)프로그램의 제어 흐름을 나타내는 표현입니다. 자세한 내용은 배경 지식 장을 참고하십시오.
CTA검사되는 타입 별칭(checked type alias)으로, 중간 ty IR에서 별칭으로 “제대로” 표현되는 타입 별칭입니다. (검사되지 않는) 타입 별칭은 HIR ty 로워링 중에 참조 위치가 실제 별칭 대상 타입(인스턴스화한 뒤의 타입 별칭 우변)으로 펼쳐지는 반면, CTA의 참조 위치는 AliasTy로 로워링됩니다.
CTFE컴파일 타임 함수 평가(compile-time function evaluation)의 줄임말로, 컴파일러가 const fn을 컴파일 타임에 평가하는 기능을 말합니다. 이는 컴파일러의 상수 평가 시스템의 일부입니다. (자세히 보기)
cx컨텍스트(context)의 줄임말로 cx를 자주 사용합니다. tcx, infcx 등도 참고하십시오.
ctxt컨텍스트(context)의 줄임말로 ctxt도 사용합니다. 예를 들면 TyCtxt가 있습니다. cx나 tcx도 참고하십시오.
DAG방향성 비순환 그래프(directed acyclic graph)는 컴파일 중에 쿼리 간의 의존성을 추적하는 데 사용됩니다. (자세히 보기)
데이터 흐름 분석(data-flow analysis)프로그램의 제어 흐름상 각 지점에서 어떤 속성이 참인지 알아내는 정적 분석입니다. 자세한 내용은 배경 지식 장을 참고하십시오.
드 브라윈 인덱스(de Bruijn index)변수가 어느 바인더에 의해 바인딩되는지를 정수만으로 나타내는 기법입니다. 변수 이름을 바꾸어도 변하지 않는다는 장점이 있습니다. (자세히 보기)
DefId정의를 식별하는 인덱스입니다(rustc_middle/src/hir/def_id.rs 참고). DefPath를 고유하게 식별합니다. 자세한 내용은 HIR 장을 참고하십시오.
판별값열거형 배리언트나 제너레이터 상태가 “활성” 상태임을 나타내기 위해 그와 연관된 기저 값입니다(단, “배리언트 인덱스”와 혼동해서는 안 됩니다). 런타임에 활성 배리언트의 판별값은 태그에 인코딩됩니다.
이중 포인터(double pointer)추가 메타데이터를 가진 포인터입니다. 자세한 내용은 팻 포인터를 참고하십시오.
드롭 글루(drop glue)(내부) 데이터 타입의 소멸자(Drop) 호출을 처리하는, 컴파일러가 생성한 명령어입니다.
DST동적 크기 타입(dynamically-sized type)의 줄임말로, 컴파일러가 메모리상의 크기를 정적으로 알 수 없는 타입입니다(예: str 또는 [u8]). 이러한 타입은 Sized를 구현하지 않으며 스택에 할당될 수 없습니다. 구조체의 마지막 필드로만 올 수 있습니다. 포인터 뒤에서만 사용할 수 있습니다(예: &str 또는 &[u8]).
이른 바인딩 라이프타임(early-bound lifetime)정의 위치에서 치환되는 라이프타임/영역(region)입니다. 아이템의 Generics에서 바인딩되며 GenericArgs를 사용하여 치환/인스턴스화됩니다. 늦은 바인딩 라이프타임과 대조됩니다. (자세히 보기)
이펙트(effects)현재로서는 const 트레이트와 ~const 바운드만을 의미합니다. (자세히 보기)
빈 타입(empty type)거주 불가능 타입을 참고하십시오.
팻 포인터(fat pointer)어떤 값의 주소와 함께 그 값을 사용하는 데 필요한 추가 정보를 담고 있는 두 워드 크기의 값입니다. Rust에는 두 종류의 팻 포인터(fat pointer)가 있습니다. 바로 슬라이스에 대한 참조와 트레이트 객체입니다. 슬라이스에 대한 참조는 슬라이스의 시작 주소와 길이를 담고 있습니다. 트레이트 객체는 값의 주소와, 그 값에 맞는 트레이트 구현을 가리키는 포인터를 담고 있습니다. “팻 포인터“는 “와이드 포인터(wide pointer)” 또는 “더블 포인터(double pointer)“라고도 합니다.
자유 변수(free variable)자유 변수란 (일반적인 의미에서) 표현식이나 항 안에서 바인딩되지 않은 변수를 말합니다. 자세한 내용은 배경 지식 장을 참고하십시오
GAC제네릭 연관 상수(generic associated constant)로, (자체) 제네릭 매개변수나 where 절을 가진 연관 상수입니다. generic_const_items(GCI) 기능의 일부입니다.
GAT제네릭 연관 타입(generic associated type)으로, (자체) 제네릭 매개변수나 where 절을 가진 연관 타입입니다. RFC 1598에서 도입되었습니다.
제네릭(generics)아이템에 정의된 제네릭 매개변수의 목록입니다. 제네릭 매개변수에는 세 가지 종류가 있습니다: 타입, 라이프타임, 상수 매개변수입니다.
HIRAST를 로워링(lowering)/디슈가링(desugaring)하여 만들어지는 고수준 IR입니다. (자세히 보기)
HirIddef-id와 “정의 내 오프셋(intra-definition offset)“을 결합하여 HIR의 특정 노드를 식별합니다. 자세한 내용은 HIR 장을 참고하십시오.
IAC(대개 타입 수준의) 고유 연관 상수(inherent associated constant)로, 고유 impl impl Type { … } 안에 있는 연관 상수입니다. min_generic_const_items(mGCA, MGCA) 기능과 관련하여 자주 언급됩니다. IGAC는 고유 GAC입니다.
IAT고유 연관 타입(inherent associated type)으로, 고유 impl impl Type { … } 안에 정의된 연관 타입입니다. IGAT는 고유 GAT, 즉 제네릭 IAT입니다.
ICE내부 컴파일러 오류(internal compiler error)의 약자로, 컴파일러가 비정상 종료되는 경우를 말합니다.
ICH증분 컴파일 해시(incremental compilation hash)의 줄임말로, HIR이나 크레이트 메타데이터 같은 것의 핑거프린트로 사용되어 변경 사항이 있는지 확인하는 데 쓰입니다. 이는 증분 컴파일에서 크레이트의 일부가 변경되어 다시 컴파일해야 하는지 확인하는 데 유용합니다.
infcx타입 추론 컨텍스트(InferCtxt)입니다. (rustc_middle::infer를 참고하십시오)
추론 변수, infer var 타입, 영역, 상수 추론을 수행할 때 추론 변수(inference variable)는 추론하려는 대상을 나타내는 특수한 타입/영역의 일종입니다. 대수학의 X를 떠올려 보십시오. 예를 들어 프로그램에서 어떤 변수의 타입을 추론하려는 경우, 그 알려지지 않은 타입을 나타내기 위해 추론 변수를 생성합니다.
intern인터닝(interning)은 메모리 사용량과 할당 횟수를 줄이기 위해 문자열처럼 자주 사용되는 특정 상수 데이터를 저장해 두고, 데이터 자체 대신 식별자(예: Symbol)로 그 데이터를 참조하는 것을 말합니다. 자세한 내용은 이 장을 참고하십시오.
interpreter컴파일 시점에 MIR 코드를 실행하는 상수 평가의 핵심입니다. (자세히 보기)
intrinsic인트린식(intrinsic)은 컴파일러 자체에 구현되어 있지만 사용자에게 (대개 불안정한 형태로) 노출되는 특수 함수입니다. 인트린식은 마법 같고 위험한 일을 합니다. (std::intrinsics를 참고하십시오)
IR컴파일러 분야의 일반 용어인 중간 표현(intermediate representation)의 약어입니다. 컴파일 과정에서 코드는 원시 소스(ASCII 텍스트)에서 다양한 IR로 변환됩니다. Rust에서는 주로 HIR, MIR, LLVM IR이 이에 해당합니다. 각 IR은 특정 종류의 계산에 적합합니다. 예를 들어 MIR은 빌림 검사기에 적합하고, LLVM IR은 LLVM이 이를 입력으로 받으므로 코드 생성에 적합합니다.
IRLO, irlointernals.rust-lang.org의 약어로 쓰이기도 합니다.
itemstatic, const, use 문, 모듈, 구조체 등과 같은 언어의 “정의“의 일종입니다. 구체적으로는 Item 타입에 해당합니다.
항목 시그니처아이템(예: 구조체, 함수)의 타입 시그니처/어노테이션/지정입니다. 본문(body) 안의 타입과 달리 추론을 수행하지 않는 곳이기 때문에 타입 추론과 관련하여 자주 언급됩니다.
ITIAT연관 타입 내 impl Trait(impl Trait in associated type)의 약어입니다. ATPIT라고도 합니다.
언어 항목언어 자체에 내재된 개념을 나타내는 아이템으로, Sync나 Send 같은 특수한 내장 트레이트, Add처럼 연산을 나타내는 트레이트, 또는 컴파일러가 호출하는 함수 등이 있습니다. (자세히 보기)
후기 바인딩 라이프타임호출 지점에서 치환되는 라이프타임 또는 영역입니다. HRTB에서 바인딩되며, liberate_late_bound_regions와 같은 컴파일러 내 특정 함수에 의해 치환됩니다. 조기 바인딩 라이프타임과 대비됩니다. (자세히 보기)
로컬 크레이트현재 컴파일 중인 크레이트입니다. 이는 로컬 크레이트의 의존성을 가리키는 “업스트림 크레이트“와 대비되는 개념입니다.
로워링상위 수준의 IR을 하위 수준의 IR로 변환하는 작업입니다. 예를 들어, AST 로워링(AST에서 HIR로) 또는 HIR ty 로워링(HIR에서 middle ty IR로)이 있습니다.
LTA 👎lazy type alias(지연 타입 별칭)의 약자입니다. CTA로 이름이 변경되었습니다.
LTOlink-time optimizations(링크 타임 최적화)의 약자로, 최종 바이너리가 링크되기 직전에 수행되는, LLVM이 제공하는 최적화의 집합입니다. 예를 들어 최종 프로그램에서 전혀 사용되지 않는 함수를 제거하는 것과 같은 최적화가 여기에 포함됩니다. ThinLTO는 확장성과 효율성을 조금 더 높이는 것을 목표로 하는 LTO의 변형이지만, 일부 최적화를 포기할 수도 있습니다. Rust 저장소에서 “FatLTO“에 관한 이슈를 볼 수도 있는데, 이는 Thin이 아닌 LTO에 붙은 애칭입니다. LLVM 문서는 여기와 여기를 참고하십시오.
LLVM(사실 약어가 아닙니다 :P) 오픈 소스 컴파일러 백엔드입니다. LLVM IR을 입력받아 네이티브 바이너리를 출력합니다. 그러면 다양한 언어(예: Rust)는 LLVM IR을 출력하는 컴파일러 프런트엔드를 구현하고, LLVM을 사용하여 LLVM이 지원하는 모든 플랫폼용으로 컴파일할 수 있습니다.
메모이제이션(순수) 계산(예: 순수 함수 호출)의 결과를 저장하여 나중에 같은 계산을 반복하지 않도록 하는 과정입니다. 이는 일반적으로 실행 속도와 메모리 사용량 사이의 트레이드오프입니다.
middle ty IR타입 검사기와 트레이트 솔버가 사용하는, rustc_middle::ty 모듈에 정의된 타입들의 모음입니다. 이 타입들은 본질적으로 하나의 IR을 이룹니다.
MIR타입 검사 이후에 생성되어 빌림 검사기(borrowck)와 코드 생성에 사용되는 중간 수준 IR입니다. (자세히 보기)
Miri(unsafe) Rust 코드에서 정의되지 않은 동작(Undefined Behavior)을 탐지하는 도구입니다. (자세히 보기)
단형화타입과 함수의 제네릭 구현을 구체적인 타입으로 인스턴스화하는 과정입니다. 예를 들어 코드에는 Vec<T>가 있을 수 있지만, 최종 실행 파일에는 프로그램에서 사용되는 구체적인 타입마다 Vec 코드의 사본이 하나씩 존재하게 됩니다(예: Vec<usize>용 사본, Vec<MyStruct>용 사본 등).
normalize더 정규적인 형태로 변환하는 것을 가리키는 일반적인 용어이지만, rustc에서는 보통 연관 타입 정규화를 가리킵니다.
newtype다른 타입을 감싸는 래퍼입니다(예: struct Foo(T)는 T에 대한 “newtype“입니다). Rust에서는 인덱스에 더 강한 타입을 부여하기 위해 흔히 사용됩니다.
niche어떤 타입의 유효하지 않은 비트 패턴 중 레이아웃 최적화에 사용될 수 있는 것입니다. 일부 타입은 특정 비트 패턴을 가질 수 없습니다. 예를 들어 NonZero* 정수나 참조 &T는 0 비트열로 표현될 수 없습니다. 따라서 컴파일러는 유효하지 않은 “niche 값“을 활용하여 레이아웃 최적화를 수행할 수 있습니다. 이를 활용하는 예로 Option과 유사한 열거형에서의 판별값 생략이 있으며, 이를 통해 별도의 필드 없이 타입의 니치를 enum의 “태그”로 사용할 수 있습니다.
NLL비어휘적 라이프타임(non-lexical lifetimes)의 약어로, Rust의 빌림 시스템이 제어 흐름 그래프를 기반으로 동작하도록 하는 확장입니다.
노드 id 또는 NodeIdAST나 HIR에서 특정 노드를 식별하는 인덱스로, 점차 사용이 중단되고 HirId로 대체되고 있습니다. 자세한 내용은 HIR 장을 참고하십시오.
obligation트레이트 시스템이 증명해야 하는 것입니다. (자세히 보기)
placeholder참고: skolemization은 placeholder로 대체되어 더 이상 사용되지 않습니다 “for-all” 타입(예: for<'a> fn(&'a u32))과 관련된 서브타이핑을 처리하고 고차 트레이트 바운드(예: for<'a> T: Trait<'a>)를 해결하는 방법입니다. 자세한 내용은 플레이스홀더와 유니버스에 관한 장을 참조하십시오.
pointNLL 분석에서 MIR 내의 특정 위치를 가리키는 데 사용되며, 일반적으로 제어 흐름 그래프의 노드를 가리킵니다.
프로젝션“상대 경로“를 가리키는 일반적인 용어입니다. 예를 들어 x.f는 “필드 프로젝션“이고, T::Item은 “연관 타입 프로젝션”입니다.
promoted constants함수에서 추출되어 정적 스코프로 끌어올려진 상수입니다. 자세한 내용은 이 절을 참고하십시오.
프로바이더쿼리를 실행하는 함수입니다. (자세히 보기)
quantified수학이나 논리학에서 존재 양화와 전칭 양화는 “참이 되는 타입 T가 존재하는가?” 또는 “이것이 모든 타입 T에 대해 참인가?“와 같은 질문을 할 때 사용됩니다. 자세한 내용은 배경 지식 장을 참고하십시오.
쿼리컴파일 중에 수행되는 하위 계산입니다. 쿼리 결과는 현재 세션에 캐시하거나, 증분 컴파일을 위해 디스크에 캐시할 수 있습니다. (자세히 보기)
복구(recovery)복구는 파싱 중에 잘못된 구문(예: 누락된 쉼표)을 처리하고 AST 파싱을 계속 진행하는 것을 말합니다. 이를 통해 사용자에게 불필요한 오류가 표시되는 것을 방지합니다(예: 구조체 정의에 오류가 있을 때 ‘필드 누락’ 오류가 표시되는 경우).
영역(region)문헌과 빌림 검사기에서 자주 사용되는, “라이프타임“을 가리키는 또 다른 용어입니다.
립(rib)이름 해석기에서 이름에 대한 단일 스코프를 추적하는 자료 구조입니다. (자세히 보기)
RPIT반환 위치 impl Trait(return-position impl Trait)의 약어입니다. TAIT나 ATPIT처럼 (전칭이 아닌) 존재 impl Trait입니다. (레퍼런스 참고).
RPITIT트레이트 내 반환 위치 impl Trait(return-position impl Trait in trait)의 약어입니다. RPIT과 달리, 이것은 제네릭 연관 타입(GAT)으로 디슈가링됩니다. RFC 3425에서 도입되었습니다. (자세히 보기)
rustbuild 👎부트스트랩 중 Rust로 작성된 부분을 가리키는 더 이상 사용되지 않는 용어입니다.
조사 대상(scrutinee)조사 대상(scrutinee)은 match 표현식 및 이와 유사한 패턴 매칭 구문에서 매칭의 대상이 되는 표현식입니다. 예를 들어 match x { A => 1, B => 2 }에서는 표현식 x가 조사 대상입니다.
sess컴파일 전반에 걸쳐 사용되는 전역 데이터를 저장하는 컴파일러 세션입니다.
사이드 테이블(side table)AST와 HIR은 한 번 생성되면 변경할 수 없으므로, 이들에 대한 추가 정보를 특정 노드의 id로 인덱싱되는 해시 테이블 형태로 따로 보관하는 경우가 많습니다.
시길(sigil)키워드와 비슷하지만 영숫자가 아닌 토큰으로만 구성된 것입니다. 예를 들어 &는 참조를 나타내는 시길입니다.
건전성(soundness)타입 이론의 전문 용어입니다. 대략적으로 말하면, 타입 시스템이 건전(sound)하다면 타입 검사를 통과한 프로그램은 타입 안전합니다. 즉, (안전한 Rust에서는) 값을 잘못된 타입의 변수에 강제로 넣을 수 없습니다. (“완전성(completeness)” 항목을 참고하십시오.)
span사용자 소스 코드 내의 위치로, 주로 오류 보고에 사용됩니다. 이는 파일 이름/줄 번호/열 튜플의 강화판과 같습니다: 시작/끝 지점을 담고 있으며, 매크로 확장과 컴파일러 디슈가링도 추적합니다. 그러면서도 이 모든 것이 몇 바이트 안에 압축되어 있습니다(실제로는 테이블에 대한 인덱스입니다). 자세한 내용은 Span 데이터 타입을 참고하십시오.
subst 👎substs를 제공하여 타입, 상수 표현식 등의 내부에 있는 제네릭 매개변수를 구체적인 제네릭 인자로 치환(substituting)하는 행위입니다. 오늘날 컴파일러에서는 인스턴스화(instantiating)라고 부릅니다.
substs 👎주어진 제네릭 항목에 대한 치환(substitutions)입니다(예: HashMap<i32, u32>의 i32, u32). 오늘날 컴파일러에서는 제네릭 인자(generic arguments) 목록이라고 부릅니다(단, 엄밀히 말하면 두 개념은 서로 다르므로 관련 문헌을 참고하십시오).
sysroot컴파일러가 런타임에 로드하는 빌드 산출물을 위한 디렉터리입니다. (자세히 보기)
tag열거형/제너레이터의 “태그“는 활성 변형/상태의 판별값(discriminant)을 인코딩합니다. 태그는 “직접” 방식(판별값을 필드에 그대로 저장)이거나 “니치(niche)”를 사용할 수 있습니다.
TAIT타입 별칭 impl Trait(type-alias impl Trait)의 줄임말입니다. RFC 2515에서 도입되었습니다.
tcx컴파일러의 주요 자료 구조인 “타이핑 컨텍스트”(TyCtxt)를 가리키는 표준 변수 이름입니다. (자세히 보기)
'tcxTyCtxt가 사용하는 할당 아레나의 라이프타임입니다. 컴파일 세션 중에 인터닝되는 대부분의 데이터는 이 라이프타임을 사용하며, 'hir 라이프타임을 사용하는 HIR 데이터만 예외입니다. (자세히 보기)
토큰파싱의 최소 단위입니다. 토큰은 렉싱 이후에 생성됩니다(자세히 보기).
TLS스레드 로컬 저장소. 모든 스레드가 변수를 공유하는 대신 스레드마다 고유한 사본을 갖도록 변수를 정의할 수 있습니다. 이는 LLVM과 몇 가지 상호작용이 있습니다. 모든 플랫폼이 TLS를 지원하지는 않습니다.
트레이트 참조(trait reference, trait ref) 트레이트의 이름과 그에 맞는 제네릭 인자 목록을 함께 이르는 말입니다. (자세히 보기)
trans 👎translation의 줄임말로, MIR을 LLVM IR로 변환하는 코드입니다. 코드 생성으로 이름이 바뀌었습니다.
Ty타입의 내부 표현입니다. (자세히 보기)
TyCtxt코드에서 흔히 tcx로 불리는 자료 구조로, 세션 데이터와 쿼리 시스템에 접근할 수 있게 해 줍니다.
타입 수준 항(Type-Level Term)타입이나 상수 제네릭(Const Generic)처럼 타입 수준에 있는 표현식입니다.
UFCS 👎범용 함수 호출 구문(universal function call syntax)의 줄임말로, 메서드를 호출하기 위한 모호하지 않은 구문입니다. 더 이상 사용되지 않는 용어입니다! 완전 한정 경로 / 구문을 사용하십시오. (자세히 보기, 레퍼런스 보기)
거주 불가능 타입(uninhabited type)값이 하나도 없는 타입입니다. 이는 정확히 값이 1개인 ZST와는 다릅니다. 거주 불가능 타입의 예로는 enum Foo {}가 있는데, 이 타입은 배리언트가 없으므로 결코 생성될 수 없습니다. 다룰 수 있는 값이 존재하지 않으므로, 컴파일러는 거주 불가능 타입을 다루는 코드를 죽은 코드로 취급할 수 있습니다. !(never 타입)는 거주 불가능 타입입니다. 거주 불가능 타입은 빈 타입(empty types)이라고도 합니다.
upvar클로저가 클로저 바깥에서 캡처한 변수입니다.
변성(variance)제네릭 매개변수의 변화가 서브타이핑에 어떤 영향을 주는지를 결정합니다. 예를 들어 T가 U의 서브타입이면 Vec<T>는 Vec<U>의 서브타입인데, 이는 Vec가 제네릭 매개변수에 대해 공변(covariant)이기 때문입니다. 보다 일반적인 설명은 배경 장을 참고하십시오. 타입 검사가 변성을 어떻게 처리하는지에 대한 설명은 변성 장을 참고하십시오.
배리언트 인덱스(variant index)열거형에서 배리언트에 0부터 시작하는 인덱스를 부여하여 각 배리언트를 식별합니다. 이는 순전히 내부적인 것으로, 사용자가 덮어쓸 수 있는 “판별값(discriminant)”(예: enum Bool { True = 42, False = 0 })과 혼동해서는 안 됩니다.
적격성(well-formedness, wfness, wf)의미론적으로: 의미 있는 결과로 평가되는 표현식입니다. 타입 시스템에서: 타입 시스템의 규칙을 따르는 타입 관련 구성 요소입니다.
와이드 포인터추가 메타데이터를 가진 포인터입니다. 자세한 내용은 팻 포인터를 참조하십시오.
ZST크기가 0인 타입(Zero-sized type)입니다. 값의 크기가 0바이트인 타입입니다. 2^0 = 1이므로 이러한 타입은 정확히 하나의 값만 가질 수 있습니다. 예를 들어 ()(유닛)는 ZST입니다. struct Foo;도 ZST입니다. 컴파일러는 ZST와 관련하여 몇 가지 유용한 최적화를 수행할 수 있습니다.

https://doc.rust-lang.org/reference/glossary.html#glossary도 참조하십시오.