관련 레포: https://github.com/in63119/Core-practice
오늘부터 코어 개발을 위한(ㅎㅎ) 공부를 시작해볼 것이다. 먼저, 계획하고 있는 코어 공부 플랜을 적어보기로 한다.
- Rust 환경 셋팅
- Rust 문법 공부
- Rust code example 읽기
- Rust 코드 짜보고 테스트 실행
- Ex. 블록 넘버 올라가는 것 확인
- Substrate 셋팅
- Substrate 테스트
- 도커 공부
- 리눅스 친숙해지기
- C언어 포인터, 메모리 공부(개념 인지)
- 영어 공부
- …
자, 그럼 오늘부터 Rust를 공부해보자!
1. Rust 개발 셋팅
1-1. 설치
Rust 사이트(https://www.rust-lang.org/tools/install)에서 CLI로 설치가 가능하다.(MacOS)
- 명령어 :
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
1-2. Rust의 텍스트 편집기?
Rust를 사용할 때 특정한 텍스트 편집기를 필수적으로 사용해야 하는 것은 아니다. 다만 Rust 개발자들은 VS Code
와 IntelliJ IDEA
를 사용한다고 한다. 그 외로는 Sublime Text
, Vim/Neovim
(이건 터미널에서 급하기 사용할 때 쓰지 않을까??..), Emacs
를 사용한다고 한다.
- 나의 선택?? 당연히
VS Code
. - (Optional) Rust를 설치 후
VS Code
에 rust Extension을 설치 해주었다.
1-3. 프로젝트 셋팅(a.k.a 패키지 매니저)
Node 환경에서는 프로젝트 첫 셋팅을 할 때, npm(or yarn) init -y
를 이용한다. 그러면 package.json(or yarn.json)
이 생기면서 이곳에 사용하고 싶은 모듈을 설치하여 의존성, 메타데이터, 기타 설정을 정의할 수 있다.
Rust 역시 Cargo
(이름 멋있다..)라는 공식 패키지 매니저와 빌드 시스템이 있다. 검색 해본 결과 npm과 비슷한 역할을 하는 것 같다.
Cargo.toml과 Cargo.lock: Cargo.toml 파일은 Node.js의 package.json과 유사하며, 프로젝트의 의존성, 메타데이터, 기타 설정을 정의한다. Cargo.lock 파일은 프로젝트의 의존성 트리와 각 의존성의 정확한 버전을 기록하여 일관된 빌드를 보장한다.
의존성 관리: Cargo는 crates.io라는 중앙 집중식 패키지 레지스트리에서 패키지(크레이트라고 함)를 가져온다. Cargo.toml 파일에 정의된 의존성에 따라 필요한 크레이트를 자동으로 다운로드하고, 빌드한다.
프로젝트 빌드: Cargo는 Rust 프로젝트를 쉽게 빌드할 수 있는 명령어를 제공한다. cargo build 명령을 사용하여 프로젝트를 컴파일할 수 있다.
테스트 및 문서: cargo test 명령으로 프로젝트의 테스트를 실행할 수 있고, cargo doc 명령으로 코드 문서를 생성할 수 있다.
패키지 배포: 개발한 크레이트를 crates.io에 배포할 수 있어, 다른 사람들이 사용할 수 있게 된다.
rust 프로젝트를 생성을 하려면, cargo new my_project
.
현재 내가 있는 디렉토리에 프로젝트를 초기화 하려면 cargo init
. (나는 그냥 초기화만 했다.)
cargo init
후에 생기는 것들
- src 폴더: 여타 프레임워크의 src 폴더와 다른 것이 없다.(여기서 작업)
- target 폴더: Node의 경우. 내가 사용하고 싶은 모듈을 설치하면 package.json에 의존성이 저장되면서,
node_modules
에 설치된다. 일반적으로node_modules
는 깃 레포에 굳이 올리지 않는다. rust도 같은 것이 있을까 검색해보니 역시나 이target
폴더가 그 역할을 한다고 한다..gitignore
로 커밋 제외 시켜주었다. Cargo.toml & Cargo.lock
:package.json(or yarn.json) & package.lock(or yarn.lock)
이라고 보면 된다.