| ... | ... | |
|---|
| 13 | 13 | == 특징 == |
|---|
| 14 | 14 | === 소유권 === |
|---|
| 15 | 15 | 러스트를 배울 때 나오면 가장 때려치고 싶게 만드는 원흉. 메모리를 바로바로 해지하는 언어 특성상 소유권은 메우 중요한 계념이다. |
|---|
| 16 | | |
|---|
| 17 | | ==== 스코프 ==== |
|---|
| 18 | | 가장 중요한 계념 중 하나는 스코프[* {랑 }사이] 밖을 벗어나면 스코프 안에서 정의된 변수는 사용할 수 없다인데 예를들어{{{#!syntax rust |
|---|
| 19 | | fn main () { |
|---|
| 20 | | { |
|---|
| 21 | | let a:u8 = 0; |
|---|
| 22 | | } |
|---|
| 23 | | println!("{a}"); |
|---|
| 24 | | } }}}를 실행하면 컴파일 에러가 난다.[* 런타임 에러가 아니다!] 왜냐하면 스코프 안에서 선언 된 a를 밖에서 값을 조회하였기 때문이다. |
|---|
| 25 | | |
|---|
| 26 | 16 | ==== 함수에 넘기기 ==== |
|---|
| 27 | 17 | 또한 어떤 함수에 인자로 값을 넘기면 그 값의 소유권은 만료된다.{{{#!syntax rust |
|---|
| 28 | 18 | fn main () { |
|---|
| ... | ... | |
|---|
| 48 | 38 | } |
|---|
| 49 | 39 | }}}이렇게 함수에 넘길 때 참조자(&)를 사용하면 소유권을 유지할 수 있다. |
|---|
| 50 | 40 | ==== lifetime ==== |
|---|
| 51 | | '''러스트의 난이도를 높히는 주범''' 포인터가 혜지된 메모리를 가리키는 것을 방지하려 만들었다. 러스트라는 언어 자체가 null pointer exception을 피하려고 설계되었기 때문이다. |
|---|
|
|
|
|
|
|
|
|
|
| 41 | '''러스트의 난이도를 높히는 주범''' 포인터가 혜지된 메모리를 가리키는 것을 방지하려 만들었다. 러스트라는 언어 자체가 null pointer exception[* dangling pointer라고 많이 불리는듯]을 피하려고 설계되었기 때문이다. |
|---|
| 42 | ==== 스코프 ==== |
|---|
| 43 | 가장 중요한 계념 중 하나는 스코프[* {랑 }사이] 밖을 벗어나면 스코프 안에서 정의된 변수는 사용할 수 없다인데 예를들어{{{#!syntax rust |
|---|
| 44 | fn main () { |
|---|
| 45 | { |
|---|
| 46 | let a:u8 = 0; |
|---|
| 47 | } |
|---|
| 48 | println!("{a}"); |
|---|
| 49 | } }}}를 실행하면 컴파일 에러가 난다.[* 런타임 에러가 아니다!] 왜냐하면 스코프 안에서 선언 된 a를 수명이 끝난 스코프 밖에서 값을 조회하였기 때문이다. |
|---|
| 50 | |
|---|
| 52 | 51 | == 그 외 == |
|---|
| 53 | 52 | * 컴파일 언어이다. |
|---|
| 54 | 53 | * 컴파일 시간에 대부분의 런타임 에러를 잡아낸다. |
|---|