나는 같은 디렉토리에있는 세 개의 파일들로 구성된 Cargo 프로젝트를 가지고있다 : main.rs
, mod1.rs
그리고 .Cargo/Rust를 사용하여 동일한 디렉토리의 파일을 모듈에 포함시키는 방법은 무엇입니까?
은 내가 mod1.rs
에서 main.rs
에 기능을 가져 오는 것과 같은 방법을 mod1.rs
하는 mod2.rs
에서 기능을 가져올.
필자는 필요한 파일 구조에 대해 읽었지만 가져 오지는 못했습니다 - 가져온 모든 파일의 이름 지정 mod
은 편집기에서 사소한 혼동을 유발할뿐 아니라 프로젝트 계층을 복잡하게 만듭니다.
파이썬 또는 C++ 에서처럼 파일을 디렉토리 구조와 독립적으로 가져 오거나 포함시키는 방법이 있습니까?
main.rs :
mod mod1; // Works
fn main() {
println!("Hello, world!");
mod1::mod1fn();
}
mod1.rs :
mod mod2; // Fails
pub fn mod1fn() {
println!("1");
mod2::mod2fn();
}
mod2.rs :에
pub fn mod2fn() {
println!("2");
}
건물 결과 :
error: cannot declare a new module at this location
--> src\mod1.rs:1:5
|
1 | mod mod2;
| ^^^^
|
note: maybe move this module `src` to its own directory via `src/mod.rs`
--> src\mod1.rs:1:5
|
1 | mod mod2;
| ^^^^
note: ... or maybe `use` the module `mod2` instead of possibly redeclaring it
--> src\mod1.rs:1:5
|
1 | mod mod2;
| ^^^^
,
어디서나 모듈로 존재하지 않기 때문에 use
을 사용할 수 없으며 디렉토리 구조를 수정하고 싶지 않습니다.
정말 고마워요! 나는 그런 옵션이 없다고 거의 확신했다. – Neo
나는 그 장을 읽었지만, 그 장에서 내가 당신이 묘사하는 것을 할 수 있다는 것을 이해하지 못했다. – Neo
@ 네오 : 괜찮습니다! 일단 모듈 시스템이 마음에 든다면 이해가되지만, 분명히 약간의 학습 곡선이 있습니다. [현재 약간의 작업을 단순화하기위한 작업이 있습니다.] (https://github.com/rust- lang/rfcs/pull/2126). –