1~3장 정리(재상)
- 코딩 컨벤션: snake_case로 변수, 함수 선언,SCREAMING_SNAKE_CASE로 상수 선언
- 타입 선언: let으로 시작, 변수 이름 옆에 type이 없으면 자동 추론
- 변수의 불변성: let뒤에mut가 붙으면 가변, 없으면 기본적으로 불변
- 타입: tuple = 간단한 구조체 (여러 타입을 순서에 따라 묶음, 엄밀히 구조체랑은 다른듯), arrays = 같은 타입, 고정 길이 배열, slices = 가변 길이 배열
- 상수에 타입 한정은 상수 값 바로 뒤에 타입 선언 (ex. 13u8)
- 타입 캐스팅은 as로 명시적 변환 필요
- 배열 선언은 [type; len]방식으로 선언, 순서에 대한 요소 접근은[index]
- 함수는 fn function_name(arg1: type, arg2: type) -> (ret1_type, ret2_type)식으로 선언
- 함수에서 명시적으로 return하지 않으면 가장 마지막 expression의 결과를 암묵적으로 반환함
- 함수에서 여러 값을 반환하는 것은 사실 tuple로, tuple의 element 순서 접근은 tuple.index식으로 접근 (ex.result.0)
- 길이가 0인 tuple은 ()으로 표현, void 역할과 비슷, 함수 return에서 생략 가능
 
- if,- else if,- else로 조건 검사, 조건문은- ()로 감싸지 않아도 됨
- 무한반복 (while(1))은loop키워드 활용,break로 탈출,break를 return처럼 써서 loop의 결과를 받을 수 있음
- while 생략
- for i in start..end식으로 [start, end) 까지 반복,- start..=end식으로 [start, end] 까지 반복
해당 조건에 맞는- i값을 생성하는 것이라 중간에 수정해서 생략, 재시도가 불가능함
- match로 기존 switch, if문을 혼합해서 쓸 수 있음, pascal 식이라 break 불필요
- 변수 값 초기화에 if-else,match를 inlining 할 수 있음. return문 표기하지 않는 것과 비슷하게 하면 됨
 
- tuple과 달리 명시적으로 struct로 타입 선언 가능
- method 호출 방식은 C++과 동일
- 메모리 영역을 3개로 구분하는데, 예제에서 말하는 data memory가 data segment와 code segment의 혼합인거같음
나머지는 stack, heap memory. 자명해서 생략
- string을 상수가 아니라 변수 형태로 생성하고 싶으면 String::from("")으로 접근할 것,
string struct 자체는 stack에 있지만, 문자열의 메모리 저장 공간은 heap에 있다고 함.
- struct 타입 옆에 member 선언을 tuple 식으로 하면 named tuple 식으로 사용됨.
struct 타입 옆에 member 선언을 하지 않으면 empty tuple, 멤버가 없는 struct가 되며, unit-like struct라 함.
- enum 사용 가능, element 접근은 ::으로 해야 함.
enum에 naming이 아닌, type을 넣어서 tagged union처럼 사용 가능 (코드 더러워지기 딱 좋아보임)