일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- API
- 개발
- framework
- 코딩테스트
- 읽기쉬운코드
- 엘라스틱서치
- cleancode
- 데이터베이스
- 애자일기법
- JPA
- Elasticsearch
- spring boot
- 자바
- 알고리즘
- database
- 클린코드
- 백준
- 스프링
- Baekjoon
- mongoDB
- Java
- 코드
- 그리디알고리즘
- 그리디
- ES
- Spring
- 코딩
- 프레임워크
- 개발자
- 애자일프로그래밍
- Today
- Total
튼튼발자 개발 성장기🏋️
러스트 23 - Packages와 Crates, 그리고 Modules #1 : Packages와 Crates 본문
앞 소개 게시글 <러스트 22 - Packages와 Crates, 그리고 Modules>에서 언급했 듯이, Packages와 Crates는 라이브러리와 실행 파일을 만들어주는 녀석들이다.
- crate는 바이너리 혹은 라이브러리이다.
- crate root는 crate를 빌드할 때 사용되는 소스 파일이다.
- package는 Crates를 빌드하는 방법을 설명하는 Cargo.toml를 가지고 있다. package의 crate는 하나의 라이브러리가 될 수 있다.
(아직 감이 잘 오지 않는다...)
우리가 처음 Cargo를 사용했을 때를 기억해보자... [cargo new] command를 사용했었다. 그렇게 프로젝트를 생성을 했었다. 여기서 생각해야할 것은 생성된 프로젝트에 package가 생겼다는 것. 왜? Cargo가 Cargo.toml파일을 만들었기 때문.
이상하게도 Cargo.toml 내용을 보면 src/main.rs에 대한 내용이 없다. run을 하게 되면 분명 main.rs가 실행 되는데 그 어디에도 main.rs에 대한 내용을 찾아볼 수 없다.
Cargo 규칙에 따르면 package의 Cargo.toml과 같은 디렉토리에 main.rs가 포함된 src가 있는 경우, Cargo는 이 package가 package 이름과 같은 이진 crate를 포함하고 src/main.rs가 crate root임을 알고 있다.
Cargo의 또 다른 규칙은 package 디렉토리에 src/lib.rs가 포함되어 있으면 package와 package 이름과 같은 라이브러리 crate가 포함되어 있고 src/lib.rs가 해당 crate root가 된다.
crate root파일은 Cargo에 의해 rustc에 전달되어 라이브러리 혹은 바이너리(실행파일)을 빌드한다.
package는 0개 또는 1개의 라이브러리 crate와 원하는 만큼의 이진 crate를 포함할 수 있다. package는 적어도 하나의 crate가 있어야 한다.
'프로그래밍 > RUST' 카테고리의 다른 글
러스트 22 - Packages와 Crates, 그리고 Modules (0) | 2019.04.21 |
---|---|
러스트 21 - 예외처리 #2 : Result<T, E> (0) | 2019.04.14 |
러스트 20 - 예외처리 #1 : panic! (0) | 2019.04.14 |
러스트 19 - Collections #2 : Hash Map (0) | 2019.03.31 |
러스트 18 - Collections #1 : Vector (0) | 2019.03.31 |