Rust in action : systems programming concepts and techniques
Autor Principal: | |
---|---|
Formato: | Libro |
Lengua: | inglés |
Datos de publicación: |
Shelter Island :
Manning,
2021
|
Temas: | |
Acceso en línea: | Consultar en el Cátalogo |
Notas: | Incluye índice. |
Descripción Física: | xxiii, 430 p. : il. |
ISBN: | 9781617294556 |
Tabla de Contenidos:
- 1 Introducing Rust
- 1.1 Where is Rust used?
- 1.2 Advocating for Rust at work
- 1.3 A taste of the language
- 1.4 Downloading the book’s source code
- 1.5 What does Rust look and feel like?
- 1.6 What is Rust?
- 1.7 Rust’s big features
- 1.8 Downsides of Rust
- 1.9 TLS security case studies
- 1.10 Where does Rust fit best?
- 1.11 Rust’s hidden feature: Its community
- 1.12 Rust phrase book
- Part 1 Rust language distinctives
- 2 Language foundations
- 2.1 Creating a running program
- 2.2 A glance at Rust’s syntax
- 2.3 Numbers
- 2.4 Flow control
- 2.5 Defining functions
- 2.6 Using references
- 2.7 Project: Rendering the Mandelbrot set
- 2.8 Advanced function definitions
- 2.9 Creating grep-lite
- 2.10 Making lists of things with arrays, slices, and vectors
- 2.11 Including third-party code
- 2.12 Supporting command-line arguments
- 2.13 Reading from files
- 2.14 Reading from stdin
- 3 Compound data types
- 3.1 Using plain functions to experiment with an API
- 3.2 Modeling files with struct
- 3.3 Adding methods to a struct with impl
- 3.4 Returning errors
- 3.5 Defining and making use of an enum
- 3.6 Defining common behavior with traits
- 3.7 Exposing your types to the world
- 3.8 Creating inline documentation for your projects
- 4 Lifetimes, ownership, and borrowing
- 4.1 Implementing a mock CubeSat ground station
- 4.2 Guide to the figures in this chapter
- 4.3 What is an owner? Does it have any responsibilities?
- 4.4 How ownership moves
- 4.5 Resolving ownership issues
- Part 2 Demystifying systems programming
- 5 Data in depth
- 5.1 Bit patterns and types
- 5.2 Life of an integer
- 5.3 Representing decimal numbers
- 5.4 Floating-point numbers
- 5.5 Fixed-point number formats
- 5.6 Generating random probabilities from random bytes
- 5.7 Implementing a CPU to establish that functions are also data
- 6 Memory
- 6.1 Pointers
- 6.2 Exploring Rust’s reference and pointer types
- 6.3 Providing programs with memory for their data
- 6.4 Virtual memory
- 7 Files and storage
- 7.1 What is a file format?
- 7.2 Creating your own file formats for data storage
- 7.3 Implementing a hexdump clone
- 7.4 File operations in Rust
- 7.5 Implementing a key-value store with a log-structured, append-only storage architecture
- 7.6 Actionkv v1: The front-end code
- 7.7 Understanding the core of actionkv: The libactionkv crate
- 8 Networking
- 8.1 All of networking in seven paragraphs
- 8.2 Generating an HTTP GET request with reqwest
- 8.3 Trait objects
- 8.4 TCP
- 8.5 Ergonomic error handling for libraries
- 8.6 MAC addresses
- 8.7 Implementing state machines with Rust’s enums
- 8.8 Raw TCP
- 8.9 Creating a virtual networking device
- 8.10 "Raw" HTTP
- 9 Time and timekeeping
- 9.1 Background
- 9.2 Sources of time
- 9.3 Definitions
- 9.4 Encoding time
- 9.5 clock v0.1.0: Teaching an application how to tell the time
- 9.6 clock v0.1.1: Formatting timestamps to comply with ISO 8601 and email standards
- 9.7 clock v0.1.2: Setting the time
- 9.8 Improving error handling
- 9.9 clock v0.1.3: Resolving differences between clocks with the Network Time Protocol (NTP)
- 10 Processes, threads, and containers
- 10.1 Anonymous functions
- 10.2 Spawning threads
- 10.3 Differences between closures and functions
- 10.4 Procedurally generated avatars from a multithreaded parser and code generator
- 10.5 Concurrency and task virtualization
- 11 Kernel
- 11.1 A fledgling operating system (FledgeOS)
- 11.2 Fledgeos-0: Getting something working
- 11.3 fledgeos-1: Avoiding a busy loop
- 11.4 fledgeos-2: Custom exception handling
- 11.5 fledgeos-3: Text output
- 11.6 fledgeos-4: Custom panic handling
- 12 Signals, interrupts, and exceptions
- 12.1 Glossary
- 12.2 How interrupts affect applications
- 12.3 Software interrupts
- 12.4 Hardware interrupts
- 12.5 Signal handling
- 12.6 Handling signals with custom actions
- 12.7 Sending application-defined signals
- 12.8 Ignoring signals
- 12.9 Shutting down from deeply nested call stacks
- 12.10 A note on applying these techniques to platforms without signals
- 12.11 Revising exceptions