2.18 Summary
In this chapter, we explored the basic structure and organization of Rust programs, highlighting both the similarities and differences with C. We covered:
- Compilation and Cargo: How Rust compiles to an executable binary and how Cargo streamlines building and dependency management.
- Program Structure: The default layout of Rust programs, including modules, functions, types, and
use
statements. main
Function: Rust’s entry point and its relationship to C’smain
.- Variables and Mutability: Rust’s immutable-by-default approach, with the
mut
keyword for explicitly mutable variables. - Data Types: Fixed-width numeric types, booleans, and Rust’s Unicode-based
char
. - Constants and Statics: How to declare compile-time constants and static variables.
- Functions and Control Flow: Defining functions, using
if
,while
,for
, and theloop
construct. - Modules and Crates: Organizing code into modules and compiling it into either binary or library crates.
use
and Namespacing: Precisely importing items into scope, in contrast to C’s preprocessor includes.- Traits: Abstracting shared behavior without using function pointers or manual vtables.
- Macros: Safe, flexible compile-time code generation that goes beyond C’s macro system.
- Error Handling: Employing
Result
andOption
instead of exceptions or ambiguous error codes. - Memory Safety: Ownership and borrowing rules that prevent common memory issues at compile time.
- Expressions vs. Statements: Rust’s expression-based syntax, which differs from C’s more rigid approach.
- Style and Documentation: Naming conventions, formatting with
rustfmt
, and documentation viarustdoc
. - Async Support: Rust’s
async/await
model and safe concurrency powered by crates liketokio
.
Each of these elements contributes to Rust’s focus on safety, performance, and concurrency. Understanding them provides a solid foundation for more advanced topics such as ownership, lifetimes, and multi-threaded programming. The next chapters will delve deeper into these areas, illustrating how Rust’s unique features further distinguish it from C and other systems languages.