Here is my directory structure:
lowks@lowkster ~/src/rustlang/gettingrusty $ tree .
.
├── Cargo.lock
├── Cargo.toml
├── foo.txt
├── src
│ ├── boolean_example.rs
│ ├── function_goodbye_world.rs
│ ├── listdir.rs
│ ├── looping.rs
│ ├── main.rs
│ ├── pattern_match.rs
│ └── write_to_file.rs
└── target
├── build
├── deps
├── examples
├── gettingrusty
└── native
6 directories, 11 files
When I run 'cargo build', it seems to only build main.rs
. How should I change Cargo.toml to build the rest of the files too?
Put
other.rs
file intobin
subfolder ofsrc
folder (./src/bin/other.rs
). And runcargo build --bin other
orcargo run --bin other
There are a few different types of binaries or targets that cargo recognizes:
For example, if the file
boolean_example.rs
is a standalone example that you want to run you can put in inside anexamples
directory and tell cargo about it like so:This lets you invoke your example with
cargo run --example boolean
Read the cargo book's page on package layout as well to see how these target directories can be structured.
The Rust compiler compiles all the files at the same time to build a crate, which is either an executable or a library. To add files to your crate, add
mod
items to your crate root (here, main.rs) or to other modules:To access items defined in another module from your crate root, you must qualify that item with the module name. For example, if you have a function named
foo
in modulelooping
, you must refer to it aslooping::foo
.You can also add
use
statements to import names in the module's scope. For example, if you adduse looping::foo;
, then you can just usefoo
to refer tolooping::foo
.For more information, see the section on Crates and Modules in the Rust Programming Language book.