Search icon CANCEL
Subscription
0
Cart icon
Your Cart (0 item)
Close icon
You have no products in your basket yet
Save more on your purchases! discount-offer-chevron-icon
Savings automatically calculated. No voucher code required.
Arrow left icon
Explore Products
Best Sellers
New Releases
Books
Videos
Audiobooks
Learning Hub
Newsletter Hub
Free Learning
Arrow right icon
timer SALE ENDS IN
0 Days
:
00 Hours
:
00 Minutes
:
00 Seconds
Rust Web Programming
Rust Web Programming

Rust Web Programming: A hands-on guide to Rust for modern web development, with microservices and nanoservices , Third Edition

eBook
R$222.99
Paperback
R$278.99
Subscription
Free Trial
Renews at R$50p/m

What do you get with eBook?

Product feature icon Instant access to your Digital eBook purchase
Product feature icon Download this book in EPUB and PDF formats
Product feature icon Access this title in our online reader with advanced features
Product feature icon DRM FREE - Read whenever, wherever and however you want
Modal Close icon
Payment Processing...
tick Completed

Billing Address

Table of content icon View table of contents Preview book icon Preview Book

Rust Web Programming

Further Reading

  1. Hands on Functional Programming in Rust (2018) Andrew Johnson: chapter one (generics and structs)
  2. Mastering Rust (2019) Rahul Sharma and Vesa Kaihlavirta: chapter one (A tour of the language)
  3. The Problem With Single-threaded Shared Mutability (2015) by Manish Goregaokar: https://manishearth.github.io/blog/2015/05/17/the-problem-with-shared-mutability/

Rust Project Developers, 2024. The Rust Programming Language. [online] Available at: https://doc.rust-lang.org/book/ [Accessed 21 June 2024]

Latimer, N., 2020. Programming Rust. [online] Available at: https://doc.rust-lang.org/stable/rust-by-example/ [Accessed 21 June 2024].

Technical requirements

You can download the example project and code for this book by following the instructions in the Download the example code files section in the Preface of this book.

This chapter’s code files are included in the downloadable code bundle.

Verifying with traits

Enums can empower structs so that they can handle multiple types. This can also be translated for any type of function or data structure. However, this can lead to a lot of repetition. Take, for instance, a User struct. Users have a core set of values, such as a username and password; however, they could also have extra functionality based on roles. With users, we must check roles before firing certain processes based on the traits that the user has implemented.

Through the creation of a simple program that defines users and their roles, we can demonstrate how to wrap up structs with traits:

  1. We define our users with the following code:
    struct AdminUser {
        username: String,
        password: String
    }
    struct User {
        username: String,
        password: String
    }
    

We can see in the preceding code that the User and AdminUser structs have the same fields. For this exercise, we just need two different structs to demonstrate the effect...

Metaprogramming with macros

Metaprogramming can generally be described as a way in which a program can manipulate itself based on certain instructions.

Considering the strong typing Rust has, one of the simplest ways in which we can meta-program is by using generics. A classic example of demonstrating generics is through coordinates, as follows:

struct Coordinate <T> {
    x: T,
    y: T
}
fn main() {
    let one = Coordinate{x: 50, y: 50};
    let two = Coordinate{x: 500, y: 500};
    let three = Coordinate{x: 5.6, y: 5.6};
}

In the preceding snippet, the Coordinate struct is defined with a single generic parameter, T. This T is a placeholder that can represent any type. When we create an instance of Coordinate, Rust’s compiler replaces T with specific types. In our example:

  • one uses T as i32
  • three uses T as f62

This flexibility allows the Coordinate struct to handle different types of numbers without needing implementations for...

Mapping messages with macros

Throughout the book, we will be using a web framework to match HTTP requests to the right function to be handled. However, there are times when you want to accept a message over a TCP connection and match the handling function based on the message received. (It does not have to be via TCP; I have found this type of macro to be useful for module interfaces or receiving messages via a channel.) In this section, we will implement a simple macro that will reduce the amount of code we need to write when mapping a struct to a function.

We map our messages using macros by carrying out the following steps:

  1. Defining our contracts and contract handler
  2. Defining functions to handle contracts
  3. Building a register contract macro
  4. Using our macro in a program

We will start with step 1.

Defining our contracts and contract handler

To map messages, we initially must define the data contracts that we will be mapping to our...

Configuring our functions with traits

In a Rust web program, we generally have a series of layers and APIs. These layers usually consist of a frontend, backend, and data access layer. With these layers, we can have multiple different frameworks and engines. Throughout the book, we will be building out our web application so we can swap these frameworks and engines out.

These frameworks should have minimal footprint on your code, with clear separation between the interfaces. With web frameworks, you still must run a server using the web framework. We can swap out different engines, frameworks, and crates by using traits with no reference to self.

To demonstrate how this works, we are going to add another endpoint and data contract that gets a user by name from the database. Our database could be any database. We do not want our code to commit to having a particular data storage engine to run; this would not be flexible. To make an interaction with a database flexible, we implement...

Checking struct state with the compiler

There are times when the state of a struct and certain processes are just not appropriate anymore. A nice, clear example would be a database transaction. While a database transaction is in progress, certain processes are appropriate, such as adding another operation to the transaction. You may also want to commit your transaction or roll it back. However, once we have committed our transaction, we cannot roll it back or add another operation to the transaction; we need another transaction for this. Considering this, I would want my compiler to check and ensure that I am not passing in a transaction into certain functions once the transaction is no longer in progress. The compiler will not only give me instant feedback, but it will also be safer, as it could be that only certain edge cases could cause a bug, increasing the chance of the bug slipping through tests. We can start by defining a state with our struct.

Defining the state of a struct...

Summary

In this chapter, we covered some useful Rust-specific patterns that will take our code to the next level. We can enable multiple permissions for a struct using multiple traits. We then scaled our ability to write Rust code with macros, where we mapped data contracts with functions to handle them. Finally, we revisited traits to configure functions and implemented the type state pattern to lock down our struct.

These approaches can help you solve problems in Rust in an elegant, secure, and scalable way. You can use these approaches to solve problems you generally come across outside of web programming, too. Throughout the book, we will be revisiting these approaches to solve problems in web programming. Hopefully, with these approaches, you can see that Rust is a safe, yet flexible and powerful language. Whenever I am feeling a little too sure of myself, I remind myself that some super smart people came up with the Rust programming language and traits. This always reminds...

Questions

  1. How can we enable multiple permissions for a struct?
  2. How can we ensure that two permissions are enabled for a struct that can be passed into a function?
  3. Let us say I wanted a struct that had an ID field and nothing more. I wanted that ID field to be a string in some cases and an i32 in others. How could I achieve this?
  4. I want to have a function that calls an I/O function in it, but I want the implementation of the I/O call to be flexible, enabling other developers to slot in different implementations. How can I do this?
  5. Let us say I have a struct that passes through a process of steps, and I want to lock down my struct so it cannot be passed into functions outside of the current step. How can I do this?

Answers

  1. We can declare a trait per permission. We can then implement multiple traits in a struct.
  2. We can ensure that two traits are implemented for the struct being passed into the function with <T: TraitA + TraitB>.
  3. We would exploit generics, where the generic parameter would map to the ID field; we could then create StructA<i32> and StructA<String>.
  4. We can define a trait where the functions for the trait do not have a reference to self. This trait can then be passed to the function as a trait parameter with function_a<T: SomeTrait>(), so we can define the function struct with function_a<SomeStruct>().
  5. We can implement the type state pattern.

Learn more on Discord

To join the Discord community for this book – where you can share feedback, ask questions to the author, and learn about new releases – follow this QR code: https://packt.link/EaKXL

Left arrow icon Right arrow icon
Download code icon Download Code

Key benefits

  • Get a comprehensive introduction to Rust for full-stack web development
  • Explore the exciting evolution of Rust in recent years with WebAssembly, Axum, native TLS, and SurrealDB
  • Build code in a scalable way with microservice and nanoservice design patterns

Description

Rust is no longer just for systems programming. This book will show you why this safe and performant language is a crucial up-and-coming option for developing web applications, and get you on your way to building fully functional Rust web apps. You don’t need any experience with Rust to get started, and this new edition also comes with a shallower learning curve. You’ll get hands-on with emerging Rust web frameworks including Actix, Axum, Rocket, and Hyper. You’ll look at injecting Rust into the frontend with WebAssembly and HTTPS configuration with NGINX. Later, you’ll move on to more advanced async topics, exploring TCP and framing, and implementing async systems. As you work through the book, you’ll build a to-do application with authentication using a microservice architecture that compiles into one Rust binary, including the embedding of a frontend JavaScript application in the same binary. The application will have end-to-end atomic testing and a deployment pipeline. By the end of this book, you’ll fully understand the significance of Rust for web development. You’ll also have the confidence to build robust, functional, and scalable Rust web applications from scratch.

Who is this book for?

This book is for web developers who are looking to learn or adopt Rust to build safe and performant web applications. This includes developers familiar with languages such as Python, Ruby, and JavaScript. You don’t need any prior experience in Rust to start this book. However, you’ll need a solid understanding of web development principles, along with basic knowledge of HTML, CSS, and JavaScript to get the most out of it.

What you will learn

  • Build scalable Rust web applications as monoliths or microservices
  • Develop a deeper understanding of async Rust
  • Get to grips with Rust language features such as traits and the borrow checker
  • Manage authentication and databases in Rust web apps
  • Build app infrastructure on AWS using Terraform
  • Learn how to package and deploy Rust servers
  • Build unit tests and end-to-end tests for your Rust web apps with Python

Product Details

Country selected
Publication date, Length, Edition, Language, ISBN-13
Publication date : Jan 30, 2026
Length: 674 pages
Edition : 3rd
Language : English
ISBN-13 : 9781835887776
Languages :

What do you get with eBook?

Product feature icon Instant access to your Digital eBook purchase
Product feature icon Download this book in EPUB and PDF formats
Product feature icon Access this title in our online reader with advanced features
Product feature icon DRM FREE - Read whenever, wherever and however you want
Modal Close icon
Payment Processing...
tick Completed

Billing Address

Product Details

Publication date : Jan 30, 2026
Length: 674 pages
Edition : 3rd
Language : English
ISBN-13 : 9781835887776
Languages :

Packt Subscriptions

See our plans and pricing
Modal Close icon
R$50 billed monthly
Feature tick icon Unlimited access to Packt's library of 7,000+ practical books and videos
Feature tick icon Constantly refreshed with 50+ new titles a month
Feature tick icon Exclusive Early access to books as they're written
Feature tick icon Solve problems while you work with advanced search and reference features
Feature tick icon Offline reading on the mobile app
Feature tick icon Simple pricing, no contract
R$500 billed annually
Feature tick icon Unlimited access to Packt's library of 7,000+ practical books and videos
Feature tick icon Constantly refreshed with 50+ new titles a month
Feature tick icon Exclusive Early access to books as they're written
Feature tick icon Solve problems while you work with advanced search and reference features
Feature tick icon Offline reading on the mobile app
Feature tick icon Choose a DRM-free eBook or Video every month to keep
Feature tick icon PLUS own as many other DRM-free eBooks or Videos as you like for just R$25 each
Feature tick icon Exclusive print discounts
R$800 billed in 18 months
Feature tick icon Unlimited access to Packt's library of 7,000+ practical books and videos
Feature tick icon Constantly refreshed with 50+ new titles a month
Feature tick icon Exclusive Early access to books as they're written
Feature tick icon Solve problems while you work with advanced search and reference features
Feature tick icon Offline reading on the mobile app
Feature tick icon Choose a DRM-free eBook or Video every month to keep
Feature tick icon PLUS own as many other DRM-free eBooks or Videos as you like for just R$25 each
Feature tick icon Exclusive print discounts

Table of Contents

23 Chapters
A Quick Introduction to Rust Chevron down icon Chevron up icon
Useful Rust Patterns for Web Programming Chevron down icon Chevron up icon
Designing Your Web Application in Rust Chevron down icon Chevron up icon
Async Rust Chevron down icon Chevron up icon
Handling HTTP Requests Chevron down icon Chevron up icon
Processing HTTP Requests Chevron down icon Chevron up icon
Displaying Content in the Browser Chevron down icon Chevron up icon
Injecting Rust in the Frontend with WebAssembly Chevron down icon Chevron up icon
Data Persistence with PostgreSQL Chevron down icon Chevron up icon
Managing User Sessions Chevron down icon Chevron up icon
Communicating Between Servers Chevron down icon Chevron up icon
Caching Auth Sessions Chevron down icon Chevron up icon
Observability Through Logging Chevron down icon Chevron up icon
Unit Testing Chevron down icon Chevron up icon
End-to-End Testing Chevron down icon Chevron up icon
Deploying Our Application on AWS Chevron down icon Chevron up icon
Configuring HTTPS with NGINX on AWS Chevron down icon Chevron up icon
Practicalities of Using Microservices and Nanoservices Chevron down icon Chevron up icon
Low-Level Networking Chevron down icon Chevron up icon
Distributed Computing Chevron down icon Chevron up icon
Unlock Your Exclusive Benefits Chevron down icon Chevron up icon
Other Books You May Enjoy Chevron down icon Chevron up icon
Index Chevron down icon Chevron up icon

Customer reviews

Rating distribution
Full star icon Full star icon Full star icon Full star icon Empty star icon 4
(1 Ratings)
5 star 0%
4 star 100%
3 star 0%
2 star 0%
1 star 0%
Daniel Sep 24, 2024
Full star icon Full star icon Full star icon Full star icon Empty star icon 4
The graph in chapter 1 "what is rust) that display the bench mark of different frameworks has some numbers format that need to be reviewed. There should be an easy way to provide feedback on the book for early access titles (easy to spot erratas for you guys)
Subscriber review Packt
Get free access to Packt library with over 7500+ books and video courses for 7 days!
Start Free Trial

FAQs

How do I buy and download an eBook? Chevron down icon Chevron up icon

Where there is an eBook version of a title available, you can buy it from the book details for that title. Add either the standalone eBook or the eBook and print book bundle to your shopping cart. Your eBook will show in your cart as a product on its own. After completing checkout and payment in the normal way, you will receive your receipt on the screen containing a link to a personalised PDF download file. This link will remain active for 30 days. You can download backup copies of the file by logging in to your account at any time.

If you already have Adobe reader installed, then clicking on the link will download and open the PDF file directly. If you don't, then save the PDF file on your machine and download the Reader to view it.

Please Note: Packt eBooks are non-returnable and non-refundable.

Packt eBook and Licensing When you buy an eBook from Packt Publishing, completing your purchase means you accept the terms of our licence agreement. Please read the full text of the agreement. In it we have tried to balance the need for the ebook to be usable for you the reader with our needs to protect the rights of us as Publishers and of our authors. In summary, the agreement says:

  • You may make copies of your eBook for your own use onto any machine
  • You may not pass copies of the eBook on to anyone else
How can I make a purchase on your website? Chevron down icon Chevron up icon

If you want to purchase a video course, eBook or Bundle (Print+eBook) please follow below steps:

  1. Register on our website using your email address and the password.
  2. Search for the title by name or ISBN using the search option.
  3. Select the title you want to purchase.
  4. Choose the format you wish to purchase the title in; if you order the Print Book, you get a free eBook copy of the same title. 
  5. Proceed with the checkout process (payment to be made using Credit Card, Debit Cart, or PayPal)
Where can I access support around an eBook? Chevron down icon Chevron up icon
  • If you experience a problem with using or installing Adobe Reader, the contact Adobe directly.
  • To view the errata for the book, see www.packtpub.com/support and view the pages for the title you have.
  • To view your account details or to download a new copy of the book go to www.packtpub.com/account
  • To contact us directly if a problem is not resolved, use www.packtpub.com/contact-us
What eBook formats do Packt support? Chevron down icon Chevron up icon

Our eBooks are currently available in a variety of formats such as PDF and ePubs. In the future, this may well change with trends and development in technology, but please note that our PDFs are not Adobe eBook Reader format, which has greater restrictions on security.

You will need to use Adobe Reader v9 or later in order to read Packt's PDF eBooks.

What are the benefits of eBooks? Chevron down icon Chevron up icon
  • You can get the information you need immediately
  • You can easily take them with you on a laptop
  • You can download them an unlimited number of times
  • You can print them out
  • They are copy-paste enabled
  • They are searchable
  • There is no password protection
  • They are lower price than print
  • They save resources and space
What is an eBook? Chevron down icon Chevron up icon

Packt eBooks are a complete electronic version of the print edition, available in PDF and ePub formats. Every piece of content down to the page numbering is the same. Because we save the costs of printing and shipping the book to you, we are able to offer eBooks at a lower cost than print editions.

When you have purchased an eBook, simply login to your account and click on the link in Your Download Area. We recommend you saving the file to your hard drive before opening it.

For optimal viewing of our eBooks, we recommend you download and install the free Adobe Reader version 9.

Modal Close icon
Modal Close icon