2.8 Modules and Crates
Modules encapsulate Rust source code, concealing internal implementation details. Crates are the fundamental units of code compilation and distribution in Rust.
2.8.1 Modules
Rust uses modules (mod
) to group related code, effectively replacing C’s header-file scheme. All items in a module are private unless declared pub
.
mod my_module {
pub fn my_function() {
println!("This is my function.");
}
}
Using Modules
mod my_module { pub fn my_function() { println!("This is my function."); } } fn main() { my_module::my_function(); }
2.8.2 Splitting Modules Across Files
You can split modules into separate files:
- Create
my_module.rs
for the module’s contents. - In your main file, add:
mod my_module;
2.8.3 Crates
A crate is a compilation unit in Rust. It can be:
- Binary crate: An executable (has a
main
function). - Library crate: Shared functionality without a
main
.
2.8.4 Comparison with C
C typically organizes code with .h
and .c
files:
// my_module.h
void my_function();
// my_module.c
#include "my_module.h"
#include <stdio.h>
void my_function() {
printf("This is my function.\n");
}
// main.c
#include "my_module.h"
int main() {
my_function();
return 0;
}