Book Image

Rust Standard Library Cookbook

By : Jan Hohenheim, Daniel Durante
Book Image

Rust Standard Library Cookbook

By: Jan Hohenheim, Daniel Durante

Overview of this book

Mozilla’s Rust is gaining much attention with amazing features and a powerful library. This book will take you through varied recipes to teach you how to leverage the Standard library to implement efficient solutions. The book begins with a brief look at the basic modules of the Standard library and collections. From here, the recipes will cover packages that support file/directory handling and interaction through parsing. You will learn about packages related to advanced data structures, error handling, and networking. You will also learn to work with futures and experimental nightly features. The book also covers the most relevant external crates in Rust. By the end of the book, you will be proficient at using the Rust Standard library.
Table of Contents (12 chapters)

How it works...

The RwLock is the parallel equivalent of the RefCell we worked with in Chapter 5, Advanced Data Structures; Working with interior mutability. The big difference is that, while RefCell panics on a violation of Rust's ownership concept, RwLock simply blocks the current thread until the violation is over.

The analog of the borrow() method of RefCell is read() [17], which locks the resource for immutable access. The analog of borrow_mut() is write() [51], which locks the resource for mutable access. Makes sense, doesn't it?

These methods return a Result, which tells us whether the thread is poisoned. The meaning of poisoning is different for every lock. In an RwLock, it means that the thread that locked the resource for write access panicked. This way, you can react to panics in other threads and treat them in some way. One example where this can be useful is sending some logs to a server before a crash happens in order to diagnose the problem. In most cases, though...