TIL Udemy Rust 완벽 정복 - 섹션 1. 시작하기
TIL (Today I Learned)
- 2023.05.09
오늘 들은 범위
- 섹션 1: 시작하기
강의에서 기억하고 싶은 내용
- 러스트는 메모리 안전 시스템 언어
- 런타임이나 가비지 컬렉터가 없지만 풍부한 타입 시스템과 소유권 모델(ownership model)로 메모리 & 스레드 안정성을 보장
- null값이 없다. 대신 존재하지 않는 값을 나타내기 위한 다른 타입 시스템을 사용하고 있다.
- 포인터가 없는 참조나 null이 예외가 아니라는 뜻
- 러스트는 Cargo라는 훌륭한 패키지 관리자를 갖고 있다.
- No Data Races - 코드가 컴파일 되면 더 이상 데이터 레이스가 발생하지 않는다. - 복잡한 비동기 코드를 구현하기 좋다.
- 설치 후 명령어로 잘 설치되었는지 version 확인
rustc --version
cargo --version
rustup --version
Cargo.toml
- 프로젝트의 의존 라이브러리를 명시할 수 있다. 프로젝트의 메타 데이터와 컴파일러 세팅등
- npm으로 치자면 package.json 같은 파일
- rust에서는 패키지를 crate라 불린다.
- dependencies 섹션에 프로젝트에 필요한 크레이트를 나열할 수 있다.
- 크레이트에 가장 중요한 registry는 해당 사이트에서 확인 가능
[dependencies]
rand = "0.8.4"
cargo build: 프로젝트의 의존 라이브러리를 불러온뒤 컴파일한다 → 바이너리 = 실행파일을 출력한다.cargo run: 프로젝트 실행 명령어- 컴파일해서 모든 것들을 연결한 다음에 바이너리를 실행한다.
Finished dev [unoptimized + debuginfo] target(s) in 0.01s
Running `target/debug/example`
Hello, world!
cargo expand
- a linter form Rust - output을 format해서 출력해준다
# 설치 방법
cargo install cargo-expand
- default - stable(안정화된 버전)
- beta - 안정화 버전을 위한 일종의 후보
- nightly - master 브랜치의 최신 빌드 버전(가장 최신이지만 불안정)
rustup toolchain list - 모든 툴체인 목록을 볼 수 있다.
오늘 강의 들은 소감은? 떠오르는 생각을 가볍게 적어보세요
- 컴퓨터 공학 기초가 많이 부족한 것 같다는 생각이 들었다. 포인터나 바이너리 파일 등 C언어 공부할 때 내용이 기억이 잘 안 나서 다시 복습하는 시간을 가졌다.
- javascript와 같은 고수준 언어로 코드를 작성할 때는 가비지 컬렉터가 알아서 메모리 관리를 해줘서 딱히 신경쓰지 않았는데 저수준 언어로 프로그램 만들 때 메모리 관리에 신경을 많이 써야한다는 사실을 강의를 통해 알았다. 이번 강의를 들으면 메모리에 대해서 좀 더 심도 있게 공부할 수 있을 것 같아서 기대가 된다.
더 공부한 내용
- javascript와 어떻게 다른지 알아보기 위해 low level 언어와 high level 언어는 어떻게 다른지에 대해 알아보았다.
- Rust 메모리 관리와 Ownership
- 바이너리 파일과 바이트 파일