I can't find how to include (or import, inject, or some other word) a function from one file (module) to another.
I start a new project with
$ cd ~/projects
$ cargo new proj --bin
$ cd proj
$ tree
.
|
-- Cargo.toml
-- src
|
-- main.rs
I modify main.rs
and create a new file a.rs
(inside the src
dir) with the following code:
main.rs
fn main() {
println!("{}", a::foo());
}
a.rs
pub fn foo() -> i32 { 42 }
I run the project with cargo run
and get the error:
error[E0433]: failed to resolve: use of undeclared type or module `a`
--> src/main.rs:2:20
|
2 | println!("{}", a::foo());
| ^ use of undeclared type or module `a`
It seems that I need to import the a
somehow. I tried to add following things as a first line to main.rs
use a;
error[E0432]: unresolved import `a`
--> src/main.rs:1:5
|
1 | use a;
| ^ no `a` in the root
use a::*;
error[E0432]: unresolved import `a`
--> src/main.rs:1:5
|
1 | use a::*;
| ^ maybe a missing `extern crate a;`?
error[E0433]: failed to resolve: use of undeclared type or module `a`
--> src/main.rs:4:20
|
4 | println!("{}", a::foo());
| ^ use of undeclared type or module `a`
use a::foo;
error[E0432]: unresolved import `a`
--> src/main.rs:1:5
|
1 | use a::foo;
| ^ maybe a missing `extern crate a;`?
error[E0433]: failed to resolve: use of undeclared type or module `a`
--> src/main.rs:4:20
|
4 | println!("{}", a::foo());
| ^ use of undeclared type or module `a`
extern crate a; use a::foo;
error[E0463]: can't find crate for `a`
--> src/main.rs:1:1
|
1 | extern crate a;
| ^^^^^^^^^^^^^^^ can't find crate
extern crate proj; use proj::a::foo;
error[E0463]: can't find crate for `proj`
--> src/main.rs:1:1
|
1 | extern crate proj;
| ^^^^^^^^^^^^^^^^^^ can't find crate
I have read the guide but still cannot figure out how to do imports.
Question&Answers:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…