2.3 The main
Function: The Entry Point
Execution of a Rust binary begins at the main
function, just like in C. By convention, this function often resides in a file named src/main.rs
within a Cargo project. A project can contain multiple .rs
files organized into modules and potentially link against library crates.
2.3.1 A Minimal Rust Program
fn main() { println!("Hello, world!"); }
fn
: Keyword to declare a function.main
: The special name for the program’s entry point.()
: Parentheses enclose the function’s parameter list (empty in this case).{}
: Curly braces enclose the function’s body.println!
: A macro (indicated by the!
) for printing text to the standard output, followed by a newline.;
: Semicolons terminate most statements.- Rust follows indentation conventions similar to those in C, but—as in C—this indentation is purely for readability and has no effect on the compiler.
2.3.2 Comparison with C
#include <stdio.h>
int main(void) { // Or int main(int argc, char *argv[])
printf("Hello, world!\n");
return 0; // Return 0 to indicate success
}
- C’s
main
typically returns anint
status code (0 for success). - Rust’s
main
function, by default, returns the unit type()
, implicitly indicating success. It can be declared to return aResult
type for more explicit error handling, as we’ll see later.