배열
- 대괄호[]를 사용하여 배열임을 나타낸다
- 타입을 정의 할 때 [데이터타입; 요소갯수] 로 정의 한다.
- 변수 초기화시 [값; 요소갯수]로 한번에 초기화가 가능.
- 배열의 요소 접근은 런타임에 확인 가능하기 때문에 잘못된 인덱스 접근은 runtime panic을 발생시킨다.
튜플
- 여러개의 타입을 하나의 변수로 선언가능 (타입,타입, ...)
- 튜플에 속한 값은 인덱스로 접근이 가능하다
- 비어있는 튜플 () 은 유닛타입으로 다른 언어의 void와 유사한 반환 값이 없는 것을 나타낸다.
패턴과 구조분해
- 튜플 구조를 let (변수, 변수) 로 하여 튜플의 구조를 분해하여 값을 한번에 각각 할당 가능
- 구조체를 사용할 경우 let 구조체 { 구조체 속성, 구조체 속성 } 으로 구조 분해가 가능
공유 참조
- 값에 대한 소유권을 가지지 않는다.
- 읽기전용으로 데이터를 변경할 수 없다.
- 값에 엑세스 하는 방법을 제공하며 borrowing이라고 한다.
- &연산자로 참조 선언
- *연산자를 이용해서 역참조하여 값을 산출 할 수 있다.
- 댕글링 참조를 러스트에서는 할 수 없다 (컴파일러가 감지하고 오류 발생)
독점참조
- &mut 타입 으로 선언이 가능하다
- 가변 참조라고도 하며 참조하는 값을 변경 가능하다.
- 해당 참조만이 값에 엑세스하는데 사용 할 수 있음을 의미
- 다른 참조는 동시에 존재 할 수 없다
- 독점 참조가 존재하는 동안 값에 접근 할 수 없다.