Rust(비교)

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