Rust에서 Crate를 더 잘 이해하는 방법은 무엇입니까?

Aug 21 2020

이 책에서 -Rust By Example , 11 장 :

크레이트는 Rust의 컴파일 단위입니다. rustc some_file.rs가 호출 될 때마다 some_file.rs 는 crate 파일로 취급됩니다 .

이 책에 따르면 소스 파일은 어떻습니까?

Rust 참조 | 크레이트 및 소스 파일

컴파일 모델은 상자라는 아티팩트를 중심으로합니다. 각 컴파일은 소스 형식의 단일 크레이트를 처리하고, 성공하면 실행 파일 또는 일종의 라이브러리와 같은 바이너리 형식의 단일 크레이트를 생성합니다.

Rust 컴파일러는 항상 단일 소스 파일을 입력으로 사용하여 호출되며 항상 단일 출력 상자를 생성합니다. 해당 소스 파일을 처리하면 다른 소스 파일이 모듈로로드 될 수 있습니다. 소스 파일의 확장자는 .rs입니다.

이 성명에 따르면 다음과 같이 생각합니다.

소스 파일 (.rs 파일)-> 해당 상자

처럼 : .java-> .class

이제이 문제를 이해할 수 없습니다. 나는 바다에있다.

답변

6 KevinReid Aug 21 2020 at 11:16

이것은 당신이 인용 한 자료의 핵심 부분입니다 :

해당 소스 파일을 처리하면 다른 소스 파일이 모듈로로드 될 수 있습니다.

당신은 일반적인 라이브러리를 살펴보면라는 파일을 찾을 수 src/lib.rs와 같은 여러 줄이 포함되어 있습니다 mod foo;. 이들 각각은 src/foo.rs컴파일러가 크레이트의 일부를 구성하는 다른 모듈로 해석 할 다른 파일 을 식별합니다 (또는 동일한 파일에 모듈을 직접 포함 할 수 있음).

하나의 소스 파일이 크레이트를 구성하는 것이 아닙니다. 컴파일러가 시작할 수있는 많은 파일 이름이 주어질 수있는 다른 컴파일 모델과 달리 하나의 소스 파일에서 시작하여 크레이트를 구성하는 모든 파일을 찾을 수 있다는 것입니다. .