[Rust 공식문서 한국어 정리] 119. Rust Array 타입 가이드
[Rust 공식문서 한국어 정리] 119. Rust Array 타입 가이드
원문 제목: Primitive Type array
작성자: The Rust Project
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📌 1. 서론 — 이 문서가 다루는 내용
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Rust의 배열 타입이 제공하는 스택 기반 고정 길이 시퀀스를 상세히 다룹니다.
배열과 Vec, 슬라이스의 차이점과 각각의 적절한 사용처를 학습합니다.
배열의 생성, 인덱싱, 반복, 메서드 활용법을 정리합니다.
배열의 타입 표기 [T; N]과 컴파일 타임 길이 확정의 의미를 설명합니다.
배열이 Copy와 기본 트레이트를 자동으로 구현하는 조건을 다룹니다.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🔑 2. 핵심 개념 4가지
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
① [T; N] — N개의 T 요소를 갖는 고정 길이 배열
② 스택 할당 — 배열은 스택에 직접 저장
③ Copy — T가 Copy이면 배열도 Copy
④ IntoIterator — 배열이 소유권 이전 반복자 제공
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📖 3. 주요 내용 상세
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Rust 배열은 스택에 할당되는 고정 길이 시퀀스입니다.
타입은 [T; N]으로 표현하며 N은 컴파일 타임 상수여야 합니다.
[1, 2, 3]은 [i32; 3] 타입의 배열 리터럴입니다.
[0; 5]는 0으로 초기화된 길이 5의 배열을 생성합니다.
배열의 길이는 .len() 메서드로 얻을 수 있습니다.
배열 요소는 0부터 시작하는 인덱스로 접근합니다.
범위를 벗어난 인덱스 접근은 런타임에 패닉을 발생시킵니다.
.get(index) 메서드는 안전하게 Option<&T>를 반환합니다.
배열은 슬라이스 [T]로 자동 강제 변환됩니다.
따라서 배열은 슬라이스의 모든 메서드를 사용할 수 있습니다.
배열은 for item in arr로 순회할 수 있습니다.
Rust 2021부터 배열은 IntoIterator를 직접 구현하여 소유권 이전 반복을 제공합니다.
이전 에디션에서는 배열 반복 시 자동으로 슬라이스 반복이 되었습니다.
배열이 Copy이려면 모든 요소가 Copy여야 합니다.
[i32; 100]은 Copy이지만 [String; 3]은 Copy가 아닙니다.
배열은 Default, Debug, PartialEq, Eq, Hash 등 요소 타입에 따라 자동 구현됩니다.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🛠 4. 실전 활용
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
고정 크기 버퍼나 룩업 테이블에 배열을 사용합니다.
스택 할당으로 Vec보다 오버헤드가 적은 고정 시퀀스가 필요할 때 사용합니다.
매트릭스의 작은 고정 차원에 [[f64; 3]; 3]처럼 중첩 배열을 사용합니다.
const 배열로 컴파일 타임에 확정된 데이터 테이블을 정의합니다.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✅ 5. 정리
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
배열은 스택 기반 고정 길이 시퀀스로 효율적입니다.
Vec과의 차이를 이해하고 크기가 확정된 데이터에 배열을 사용합니다.
Rust 2021부터 배열은 직접 IntoIterator를 구현하여 소유권 반복이 가능합니다.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🔗 출처 링크
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
원문: https://doc.rust-lang.org/std/primitive.array.html
Array Methods: https://doc.rust-lang.org/std/primitive.array.html
#Rust #Array #고정길이 #스택할당 #번역

오뉴노노 님의 최근 댓글
ㅋㅋㅋㅋㅋ 2019 01.14 잘 읽었습니다 2018 12.30 포인트가 없어서 아직 시작을 못하고있는데요! 글은 잘 읽었습니다! 포인트 쌓고 도전할거에요 2018 12.30