Rust(비교)

r6 vs r7
1[[분류:프로그래밍 언어]]
12{{{#!syntax rust
23fn main() {
34 println!("hello, world!");
......
67메모리 안전성을 중요시 여기는 언어이다. 모질라 제단에서 관리하다가 러스트 제단으로 넘어왔다.
78
89페리스라는 마스코트가 있다.
10
911== 특징 ==
1012=== 소유권 ===
1113러스트를 배울 때 나오면 가장 때려치고 싶게 만드는 원흉. 메모리를 바로바로 혜지하는 언어 특성상 소유권은 메우 중요한 계념이다.
14
1215==== 스코프 ====
1316가장 중요한 계념 중 하나는 스코프[* {랑 }사이] 밖을 벗어나면 스코프 안에서 정의된 변수는 사용할 수 없다인데 예를들어{{{#!syntax rust
1417fn main () {
......
1821 println!("{a}");
1922}
2023}}}를 실행하면 컴파일 에러가 난다.[* 런타임 에러가 아니다!] 왜냐하면 스코프 안에서 선언 된 a를 밖에서 값을 조회하였기 때문이다.
24
2125==== 함수에 넘기기 ====
2226또한 어떤 함수에 인자로 값을 넘기면 그 값의 소유권은 만료된다.{{{#!syntax rust
2327fn main () {
......
2832fn 소유권은내것 (a:&str) {
2933}
3034}}}이를 실행해도 컴파일 에러가 나는데 a를 함수에 넘긴 다음에 사용하려 하였기 때문이다. 이럴 때는 to_owned(), clone()등을 써서 값을 복사함으로서 해결할 수 있지만[* clone은 벡터, String등 실제 값을 가리키는 포인터를 복사하는 반면(shallow copy), toowned는 그 메모리 내용까지 복사한다.(deep copy)] 더 좋은 방법이 있다.
35
3136==== &참조자 ====
3237어떤 함수의 값을 넘길 때
3338{{{#!syntax rust
......
3944fn 소유권은내것 (a:&&str) {
4045}
4146}}}이렇게 함수에 넘길 때 참조자를 사용하면 소유권을 유지할 수 있다. [* 사실 &str은 이미 참조자가 붙어있어서 상관없긴 하지만 예시에 String::from을 넣으면 너무 길어서 간단하게 하려고 한 것이다.~~???:선생님 예시가 이상해요~~]
47
4248==== lifetime ====
4349'''러스트의 난이도를 높히는 주범''' 포인터가 혜지된 메모리를 가리키는 것을 방지하려 만들었다.
50
4451== 그 외 ==
4552 * 컴파일 언어이다.
4653 * 컴파일 시간에 대부분의 런타임 에러를 잡아낸다.