개발_기록용

[RUST vs C++] 16. 표준 라이브러리 본문

RUST 스터디

[RUST vs C++] 16. 표준 라이브러리

나폴나폴 2024. 5. 12. 23:43
728x90

https://google.github.io/comprehensive-rust/std-types.html

 

Standard Library Types - Comprehensive Rust 🦀

This segment should take about 1 hour and 20 minutes. It contains: SlideDuration Standard Library3 minutes Documentation5 minutes Option10 minutes Result10 minutes String10 minutes Vec10 minutes HashMap10 minutes Exercise: Counter20 minutes For each of the

google.github.io

Rust의 표준 라이브러리는 c++의 것과 궤가 많이 다르다.

 

C++의 표준 라이브러리


C++의 표준 라이브러리는 STL이라 부르고, 굉장히 많다.

그래프 알고리즘, 2D 그래픽, 네트워크고 들어올랑 말랑 하는 중.

 

✔ 희대의 명령, std::move. 이건 어떤 값을 rvalue로 바꾸는 것임.

 


C++의 lvalue와 rvalue


c++에는 value category가 있다. lvalue, rvalue, xvalue, prvalue.

다 알 필요는 없다. 어떤 문장이 끝나서, 걔가 살아있으면 lvalue, 걔가 사라졌으면 rvalue.

 

예를 들어, 어떤 클래스의 생성자를 그냥 호출했다고 치자. A(); 이런 식으로.

그럼 걔는 끝나고 죽으니까 rvalue.

 

또, x++와 ++x를 비교하자.

x++ : rvalue
++x : lvalue

 

둘의 동작을 생각해보자. 그럼 해결된다.


한편 Rust에선 GCD, lower_bound 이런게 없어서 일일이 다 구현해야 한다.

그리고, 몇 안되는 이 라이브러리들도 C++은 std안에 다 있지만, Rust는 core, alloc, std와 같이 계층이 서로나뉘어짐.

 

16.2 Doc은 그냥 읽어보면 됨.

16.3 Option, 16.4 Result는 모두 앞에 설명했던 내용임.


16.5 String

✔ String : 힙에 만들어지는 문자를 조작할 수 있는 Type.

String에서 len은 실제 차지한 공간, capacity는 메모리에 확보해둔 공간. Vector와 같은 원리이다.

 

16.6 Vec

retain은 조건에 만족하는 애들만 남기기

dedup은 겹치는 애들을 제거하기(delete duplicate)

반응형
Comments