아이템
아이템 (Items)
Rust 프로그램의 구성 요소를 이야기할 때 빼놓을 수 없는 게 바로 아이템(Item)이에요. 모듈 안에 무엇이 들어갈 수 있는지, 그 아이템들이 언제 결정되는지가 이 페이지의 핵심이에요.
출처: Rust Reference
본문
**아이템(item)**은 크레이트(crate)의 구성 요소예요. 아이템들은 크레이트 안에서 중첩된 모듈들의 집합으로 정리돼요. 모든 크레이트에는 단 하나의 "가장 바깥" 익명 모듈이 있고, 그 안의 모든 아이템은 크레이트의 모듈 트리 안에서 경로(path)를 가지게 되죠.
아이템은 컴파일 타임에 전적으로 결정돼요. 일반적으로 실행 중에는 고정된 채로 유지되고, 읽기 전용 메모리에 있을 수도 있어요.
아이템에는 여러 종류가 있어요.
- 모듈
extern crate선언use선언- 함수 정의
- 타입 별칭 정의
- 구조체 정의
- 열거형 정의
- 공용체 정의
- 상수 아이템
- 정적(static) 아이템
- 트레이트 정의
- 구현(implementation)
- extern 블록
아이템은 크레이트의 루트, 모듈, 또는 블록 표현식 안에 선언될 수 있어요. 이 중 일부는 **연관 아이템(associated item)**이라고 불리며 트레이트와 구현 안에 선언할 수 있고, 또 일부는 **외부 아이템(external item)**이라고 불리며 extern 블록 안에 선언할 수 있어요.
아이템은 어떤 순서로든 정의할 수 있어요. 단, macro_rules는 자체적인 스코프 규칙을 가지므로 예외예요.
아이템 이름의 이름 분석(name resolution)은, 모듈이나 블록 안에서 아이템이 참조되는 위치보다 앞이나 뒤에 정의될 수 있도록 해줘요. 아이템의 스코프 규칙에 대한 자세한 내용은 아이템 스코프 문서에서 볼 수 있어요.