2.8 Modules and Crates
Modules encapsulate Rust source code, hiding 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.rsfor 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
mainfunction). - 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;
}