『파이썬과 비교하며 배우는 러스트 프로그래밍』을 읽으며 기억해두면 좋을 것 같은 러스트 지식들을 정리합니다.
파이썬 개발자 러스트를 배워야 하는 이유
- 파이썬의 연산 속도를 개선한다. pandas나 numpy는 이미 C++로 작성되어 있음.
- 멀티스레딩 구현이 훨씬 쉽다. 파이썬은 GIL(Global Interpreter Lock)로 멀티스레딩 성능이 좋지 못함.
- 개발도구가 매우 편리하다.
GIL(Global Interpreter Lock)란
여러 스레드가 파이썬 코드를 동시에 싱행하지 못하도록 파이썬 객체들에 접근을 못하게 하는 뮤텍스.
러스트가 많이 사용되는 분야
- 커맨드라인(CLI) 앱
- 고성능 네트워크가 필요한 분야
- 웹어셈블리
- 임베디드
웹어셈블리란
자바스크립트가 아닌 다른 다양한 프로그래밍 언어로 작성한 코드를 웹 브라우저에서 직접 실행할 수 있게 하는 기술.
러스트 기초 지식
Cargo 사용법
- rust에서 빌드는 기본적으로 디버그 모드이다. 만약 릴리즈 모드로 컴파일하고 싶다면 옵션
--release
를 붙여야 한다. cargo fmt
명령어를 사용하면 공백이나 줄바꿈 등 포맷을 한번에 정리할 수 있고,cargo clippy
명령어를 사용하면 린트를 확인할 수 있다.
코드 컨벤션
코드를 개발할 때 변수와 함수는 스네이크 표기법, 구조체는 파스칼 표기법, 상수는 스트리밍 스네이크 표기법 사용한다.
- 스네이크 표기법: 소문자 + 언더바(_) (my_function)
- 파스칼 표기법: 첫글자 대문자 + 붙여쓰기 (MyStruct)
- 스트리밍 스네이크 표기법: 대문자 + 언더바(_) (MY_CONST)
데이터 타입
- 러스트 자체 원시타입
이름 | 타입 |
---|---|
{n}비트 정수 | i8, i16, i32, i64, i128 |
부호없는 {n}비트 정수 | u8, u16, u32, u64, u128 |
아키텍처 | isize, usize |
{n}비트 부동소수점 실수 | f32, f64 |
불리언 | bool |
문자 | Char |
isize, usize는 컴퓨터가 32비트인지 64비트인지에 따라 값이 결정되는 기본 포인터 크기이다.
- std 라이브러리에서 제공되는 타입
이름 | 타입 |
---|---|
문자열 | String |
문자열 슬라이스 | str |
개인적인 의견
책에는 문자열 슬라이스인 str이 원시타입에 들어있고 char이 없었는데 이 부분은 의아하다.
내가 알기로는 str은 std 라이브러리에서 제공하는 타입이고 char이 원시타입이었는데 말이다.
해당 진위여부는 나중에 좀 더 찾아봐야겠다 (내가 잘못 알고 있는 것일 수도 있다)
익명함수: 클로저
- 파이썬의 람다함수와 동일한 역할.
- 람다 함수는 반드시 한 줄로 작성해야 하지만 클로저는 중괄호로 묶으면 여러 줄 작성 가능함.
1 | //예시코드 1 |
매크로
- 파이썬의 매크로는 매개변수 개수가 가변적임.
- 러스트에서는 token tree를 사용하여 받을 매개변수를 미리 정해두어야 함.