동일한 프로젝트의 다른 파일에서 모듈을 포함하는 방법은 무엇입니까?
다음으로 이 가이드를 나는화물 프로젝트를 만들었습니다.
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()`");
}
'IT story' 카테고리의 다른 글
DOS 명령 줄에서 Git Bash를 시작하는 방법은 무엇입니까? (0) | 2020.09.13 |
---|---|
JavaScript를 사용하여 XML 구문 분석 (0) | 2020.09.13 |
Android : AlarmManager 사용 방법 (0) | 2020.09.13 |
열 이름을 이스케이프하는 SQL 표준? (0) | 2020.09.13 |
Node.js 또는 Erlang (0) | 2020.09.13 |