I'm currently learning Rust. I've just mastered the borrowing system, but I don't know how the module system works.
To import an extern module, I must write extern crate sdl2;
. But what if I want to import a non extern crate?
I know I can define a module using mod
like:
mod foo { fn bar(length: i32) -> Vec<i32> { let mut list = vec![]; for i in 0..length + 1 { if list.len() > 1 { list.push(&list[-1] + &list[-2]); } else { list.push(1); } } list } }
And use it in the same file with foo::
, but how can I use functions/modules from other files?
Just for sake of details imagine this setup:
. |-- Cargo.lock |-- Cargo.toml `-- src |-- foo.rs `-- main.rs
So in src/foo.rs I have:
fn bar(length: i32) -> Vec<i32> { let mut list = vec![]; for i in 0..length + 1 { if list.len() > 1 { list.push(&list[-1] + &list[-2]); } else { list.push(1); } } list }
And I want to use it in src/main.rs
. When I try a plain use foo::bar
, I get:
| 1 | use foo::bar; | ^^^^^^^^ Maybe a missing `extern crate foo;`?
When putting the function inside mod foo {...}
I get the same error.
If there is any post about this topic, give me a link to it as I get nothing but the Rust Book.