Local cover image
Local cover image

Rust in action : systems programming concepts and techniques

By: Material type: TextTextPublication details: Shelter Island : Manning, 2021Description: xxiii, 430 p. : ilISBN:
  • 9781617294556
Subject(s):
Contents:
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
Star ratings
    Average rating: 0.0 (0 votes)
Holdings
Item type Home library Call number Status Date due Barcode
Libro Libro Biblioteca de la Facultad de Informática D.3.RUS MCN (Browse shelf(Opens below)) Checked out 07/04/2025 DIF-05262

Incluye índice.

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

Click on an image to view it in the image viewer

Local cover image