What this book covers
Chapter 1, Tools of the Trade – Rust Toolchains and Project Structures, introduces the Rust toolchain for build and dependency management, automated testing, and documentation.
Chapter 2, A Tour of the Rust Programming Language, illustrates the key concepts of the Rust programming language including the type system, data structures, and memory management fundamentals through an example project.
Chapter 3, Introduction to the Rust Standard Library, introduces key modules of the Rust standard library that provide the building blocks and pre-defined functionality for system programming in Rust.
Chapter 4, Managing Environment, Command Line, and Time, covers a few foundational topics around how to programmatically deal with command-line parameters, set and manipulate the process environment, and work with system time.
Chapter 5, Memory Management in Rust, provides a comprehensive look at the memory management facilities provided by Rust. We will review Linux memory management basics, the traditional shortcomings of C/C++, and how Rust can be used to overcome many of these shortcomings.
Chapter 6, Working with Files and Directories in Rust, helps you understand how the Linux filesystem works, and how to master the Rust Standard Library for various scenarios in file and directory operations.
Chapter 7, Implementing Terminal I/O in Rust, helps you understand how a pseudo-terminal application works and how to create one. The result will be an interactive application that handles streams.
Chapter 8, Working with Processes and Signals, provides an explanation of what processes are, how to handle them in Rust, how to create and communicate with a child process, and how to handle signals and errors.
Chapter 9, Managing Concurrency, explains the basics of concurrency and various mechanisms for sharing data across threads in an idiomatic way in Rust, including channels, mutexes, and reference counters.
Chapter 10, Working with Device I/O, explains Linux I/O concepts such as buffering, standard inputs and outputs, and device I/O, and shows how to control I/O operations with Rust.
Chapter 11, Learning Network Programming, explains how to work with low-level network primitives and protocols in Rust, illustrated by building low-level TCP and UDP servers and clients, and a reverse proxy.
Chapter 12, Writing Unsafe Rust and FFI, describes the key motivations and risks associated with unsafe Rust, and shows how to use FFI to safely interface Rust with other programming languages.