What this book covers
Chapter 1, An Introduction to Rust from a Python Perspective, covers the basics of Rust to enable Rust development. Relevant Python examples are given to help you grasp the Rust concepts examined.
Chapter 2, Structuring Code in Rust, explains how to structure Rust programs over multiple pages and use package management tools to organize and install dependencies.
Chapter 3, Understanding Concurrency, covers how to multithread and multiprocess in Rust, seeing as Rust has "fearless concurrency." We also cover concurrency in Python to see the differences.
Chapter 4, Building pip Modules in Python, sees us build Python packages that can be installed using pip. It also covers how packages can be hosted privately on GitHub.
Chapter 5, Creating a Rust Interface for Our pip Module, has us inject Rust into our pip module and use the Rust setup tools to compile and use the Rust code in our Python code.
Chapter 6, Working with Python Objects in Rust, considers how compatibility does not just go in one direction. In this chapter, we take in Python objects and interact with them. We also create Python objects in Rust.
Chapter 7, Using Python Modules in Rust, builds on the previous chapter and sees us use Python modules such as NumPy in our Rust code.
Chapter 8, Structuring an End-to-End Python Module in Rust, sees us wrapping up everything that has been covered into a fully functioning Python package written in Rust. This package has Python interfaces and command-line functionality that accepts YAML files for configuration.
Chapter 9, Structuring a Python Flask App for Rust, has us build a Python Flask app with a PostgreSQL database, NGINX load balancer, and Celery worker in order to get more practical with our Rust skills. All of this is wrapped in Docker to prepare us for injecting Rusk into all of these aspects of the web application.
Chapter 10, Injecting Rust into a Python Flask App, covers how to take the web application that we built in the previous chapter and inject our Rust modules into the Docker containers for the Celery worker and Flask application. We also imprint the migrations that have already been applied to automatically generate a schema of the database so our Rust code can directly connect with the database.
Chapter 11, Best Practices for Integrating Rust, concludes the book with some tips on how to avoid common mistakes as you continue to write Rust code for Python.