Rust in action : systems programming concepts and techniques

Detalles Bibliográficos
Autor Principal: McNamara, Tim
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