2.8 Modules and Crates
Modules encapsulate Rust source code, concealing internal implementation details. Crates serve as 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 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;
}