IT story

동일한 프로젝트의 다른 파일에서 모듈을 포함하는 방법은 무엇입니까?

hot-time 2020. 9. 13. 11:48
반응형

동일한 프로젝트의 다른 파일에서 모듈을 포함하는 방법은 무엇입니까?


다음으로 이 가이드를 나는화물 프로젝트를 만들었습니다.

src/main.rs

fn main() {
    hello::print_hello();
}

mod hello {
    pub fn print_hello() {
        println!("Hello, world!");
    }
}

내가 사용하는

cargo build && cargo run

오류없이 컴파일됩니다. 이제 기본 모듈을 두 개로 분할하려고하지만 다른 파일의 모듈을 포함하는 방법을 알 수 없습니다.

내 프로젝트 트리는 다음과 같습니다.

├── src
    ├── hello.rs
    └── main.rs

및 파일의 내용 :

src/main.rs

use hello;

fn main() {
    hello::print_hello();
}

src/hello.rs

mod hello {
    pub fn print_hello() {
        println!("Hello, world!");
    }
}

내가 그것을 컴파일 cargo build하면

error[E0432]: unresolved import `hello`
 --> src/main.rs:1:5
  |
1 | use hello;
  |     ^^^^^ no `hello` external crate

나는 컴파일러의 제안을 따르고 다음과 같이 수정 main.rs했습니다.

#![feature(globs)]

extern crate hello;

use hello::*;

fn main() {
    hello::print_hello();
}

그러나 이것은 여전히별로 도움이되지 않습니다.

error[E0463]: can't find crate for `hello`
 --> src/main.rs:3:1
  |
3 | extern crate hello;
  | ^^^^^^^^^^^^^^^^^^^ can't find crate

현재 프로젝트의 모듈 하나를 프로젝트의 기본 파일에 포함시키는 방법에 대한 간단한 예가 있습니까?

또한 Rust 1.37.0을 실행하고 있습니다.


You don't need the mod hello in your hello.rs file. Code in any file but the crate root (main.rs for executables, lib.rs for libraries) is automatically namespaced on a module.

To include the code from hello.rs on your main.rs, use mod hello;. It gets expanded to the code that is in hello.rs (exactly as you had before). Your file structure continues the same, and your code needs to be slightly changed:

main.rs:

mod hello;

fn main() {
    hello::print_hello();
}

hello.rs:

pub fn print_hello() {
    println!("Hello, world!");
}

You need the mod.rs file in your folder. Rust by Example explains it better.

$ tree .
.
|-- my
|   |-- inaccessible.rs
|   |-- mod.rs
|   |-- nested.rs
`-- split.rs

main.rs

mod my;

fn main() {
    my::function();
}

mod.rs

pub mod nested; //if you need to include other modules

pub fn function() {
    println!("called `my::function()`");
}

참고URL : https://stackoverflow.com/questions/26388861/how-to-include-module-from-another-file-from-the-same-project

반응형