Advanced Hands-on Rust (Pragmatic Bookshelf)

PragmaticBookshelf
Unlock Rust development with reusable libraries, traits, macros, and generic metaprogramming. Build code without the boilerplate, and learn advanced concepts.

Herbert Wolverson @herbert

edited by Tammy Coron @Paradox927

Accelerate your Rust development with reusable libraries, and build a game development toolkit that helps you quickly create games using the Bevy Engine. Improve your code with testing, benchmarking, and optimization. Unlock Rust’s trait and generic metaprogramming systems to develop code that adapts to fit your needs. Customize libraries with feature flags, and customize language syntax with macros. Master concurrency with threads and asynchronous programming. Structure your programs with reusable state management, menus, user interface elements, and asset management. Quickly build games with reusable physics and collision detection. Make your games pop with animations, particles, and rendering tricks, including parallax layering.

Accelerate your Rust development with intermediate to advanced concepts. Build reusable libraries; unleash generics, traits, macros, and more as you level up your Rust skills. Apply your skills to build a game development toolkit that helps you quickly build 2D games without reinventing the wheel when you start a new project.

Each chapter in this book includes hands-on, practical development using intermediate through advanced Rust. Make learning fun by building games as you apply language concepts. Develop several games and build the tools you need to unleash your creativity or apply the concepts to your own Rust projects.

Improve your code with testing, benchmarking, and optimization. Unlock the power of Rust’s trait and generic metaprogramming systems to create code that adapts to fit your needs. Customize libraries with feature flags, and customize language syntax with macros. Structure your code with reusable state management, menus, user interface elements, and asset management. Quickly build games with reusable physics and collision detection. Make your games pop with animations, particles, and rendering tricks, including parallax layering.

This book is the ideal follow-up to take the skills you gained in Hands-on Rust to the next level—or it can be read stand-alone once you’ve mastered basic Rust.


Herbert Wolverson has worked as a programmer and an indie game developer since the late 1990s. He’s taught programming and IT skills at a variety of levels, contributes to multiple open source projects, and is active in the game development scene.


Don’t forget you can get 35% off with your Devtalk discount! Just use the coupon code “devtalk.com" at checkout :+1:

Latest Threads About This Book Top

SuperMarioOnlyChild
@herbert In the part about spawning miners, fuel and batteries, the text says to spawn 20 of each: You already spawn the tiles that ma...
New
SuperMarioOnlyChild
@herbert Here’s a diff for the fix: --- a/MarsBaseOneOptimize/mars_base_one/src/main.rs +++ b/MarsBaseOneOptimize/mars_base_one/src/mai...
New
SuperMarioOnlyChild
The bounce function has the following line: bounce = difference; Which should be: bounce += difference; Also, I’m not sure why, but t...
New
SuperMarioOnlyChild
The actual height of the flappy image is 45 pixels: $ file assets/flappy_dragon.png assets/flappy_sprite_sheet.png assets/flappy_dragon....
New
SuperMarioOnlyChild
Running FlappyCollision/flappy_dragon_base: error[E0425]: cannot find value `impulse` in this scope --> FlappyCollision/flappy_dra...
New
tad
Title: Advanced Hands-on Rust the code relies on an obsolete version of bevy. are you considering updating the book to a more recent ve...
New
A-J-V
@herbert More notes as I continue through the book, this time for chapter 5. Chapter 5 Page 86, point 2 says to copy my_library INTO ...
New
A-J-V
@herbert Loving the book so far! I have the habit of marking any errata or concerns I have with a book as I read, and since this one is ...
New
snmpboy
Bevy has changed quite a bit recently. See the code below. fn setup( mut commands: Commands, asset_server: Res<AssetServer&g...
New
ds2k5
with the source Code package: hwmrust-code.zip I have some issues. cd /home/user1/rust/code/FlappyIntro/flappy_dragon_base $ cargo che...
New

Most Active This Week Top

Most Active This Month Top

SuperMarioOnlyChild
@herbert Here’s a diff for the fix: --- a/MarsBaseOneOptimize/mars_base_one/src/main.rs +++ b/MarsBaseOneOptimize/mars_base_one/src/mai...
New
SuperMarioOnlyChild
Running FlappyCollision/flappy_dragon_base: error[E0425]: cannot find value `impulse` in this scope --> FlappyCollision/flappy_dra...
New
SuperMarioOnlyChild
@herbert In the part about spawning miners, fuel and batteries, the text says to spawn 20 of each: You already spawn the tiles that ma...
New
SuperMarioOnlyChild
The bounce function has the following line: bounce = difference; Which should be: bounce += difference; Also, I’m not sure why, but t...
New
SuperMarioOnlyChild
The actual height of the flappy image is 45 pixels: $ file assets/flappy_dragon.png assets/flappy_sprite_sheet.png assets/flappy_dragon....
New

Most Active This Year Top

PragmaticBookshelf
Unlock Rust development with reusable libraries, traits, macros, and generic metaprogramming. Build code without the boilerplate, and lea...
New
hoozifachi
In ‘Moving Entities with Bevy’ bullet point 3, ‘Set the delta variable to a vector (containing x, y and z values)’ may be a little confus...
New
hoozifachi
Would it be cleaner to name the Plugin RandomPlugin? Also, there were a couple more changes required than the book mentioned. They were...
New
A-J-V
@herbert More notes as I continue through the book, this time for chapter 5. Chapter 5 Page 86, point 2 says to copy my_library INTO ...
New
New
ds2k5
with the source Code package: hwmrust-code.zip I have some issues. cd /home/user1/rust/code/FlappyIntro/flappy_dragon_base $ cargo che...
New
adamjcolvin
@herbert When creating my_library in the more_hands workspace in chapter 2, there’s a graphic showing the expected directory structure. ...
New
tad
Title: Advanced Hands-on Rust the code relies on an obsolete version of bevy. are you considering updating the book to a more recent ve...
New
wrightdylan
@herbert At the bottom of page 64 of beta 2, point (2) states: “Instead of inserting the RandomNumberGenerator resource yourself, add Ra...
New
paul-jewell
@herbert Good afternoon! On P120-121, you modify the code in flappy_dragon_base/src/main.rs, but don’t use the normal code block to dis...
New
paul-jewell
@herbert I think you mean spawn_image!, not spawn_sprite! in the first line on page 149?
New
paul-jewell
@herbert Hi Herbert, I think the code on page 98 should set the state to menu_state.menu_state.clone() when key ‘M’ is pressed while in...
New
wrightdylan
@herbert on p118 a method was defined as: pub fn get_handle<T>(&self, index: &str, assets: &LoadedAssets) -> Optio...
New
paul-jewell
@herbert As well as the changes noted on P64 for pig/src/main.rs, there are a couple more required: In function player: mut rng: ResMu...
New
paul-jewell
@herbert On page 4, there is a download link for the blue dragon. This works, but you end up downloading an svg file, not a png. Also, t...
New

Most Active Last Three Years Top

paul-jewell
@herbert Original message: At the bottom of P57, you search for the pcg random number crate. The search returns pcg_rand = "0.13.0", but...
New
paul-jewell
@herbert It might be worth adding use crate::AssetStore in the use changes in the second code block on P124, to avoid an error with the ...
New
paul-jewell
@herbert At the bottom of P95, you ask for the downloaded assets for the next stage to be added to “your flappy_basics/assets directory...
New
paul-jewell
@herbert The link for the download of the dice art on page 31, does not give the asset in a form which works with the program code. The ...
New
paul-jewell
@herbert Halfway down P56, you show the code defining the struct for RandomNumberGenerator, with a prefix line of #[derive(Resource)]. ...
New
snmpboy
Bevy has changed quite a bit recently. See the code below. fn setup( mut commands: Commands, asset_server: Res<AssetServer&g...
New
paul-jewell
@herbert Good morning :slight_smile: On page 91, you start to explain the code for bevy_framework/mod.rs. Perhaps it would be good to h...
New
paul-jewell
@herbert Hi Herbert, The trailing closing bracket } belongs to the impl Rect2D block, and not the function definition for quadrants. Ma...
New
paul-jewell
@herbert On page 80 in the code block for random_distribution.rs, the import is shown as: use my_library_docs::RandomNumberGenerator; ...
New
paul-jewell
@herbert In the section “Testing XorShift”, the code is not in a code block, and probably should be?
New
A-J-V
@herbert Loving the book so far! I have the habit of marking any errata or concerns I have with a book as I read, and since this one is ...
New
paul-jewell
@herbert The first block of code on P57 is not in the standard example code block (with the download link), and I think it should be?
New
New
New
paul-jewell
@herbert Good morning, On P153, the code block where the parallax background images are added has the new lines repeated again at the b...
New

Most Active Over Three Years Top

paul-jewell
@herbert The code for FlappyAssetsLoadingMenu/flappy_dragon_base/src/main.rs on page 132 doesn’t include the add_sound() elements requir...
New
paul-jewell
@herbert There is a pop-out box on P62 which should have a shell script, but instead has the line The code tag should not be here Ma...
New
paul-jewell
@herbert Good morning Herbert! You already know this, as the downloadable code has corrected it already: On page 92, you define the e...
New
New
paul-jewell
@herbert Good morning, In Chapter 5 (pages 85…86), you load the code for Flappy Dragon into a new directory. After doing this, I copied...
New
paul-jewell
@herbert There is a typo on page 108 in the code for FlappyStatesMacro/pig/src/main.rs: s:/winnner/winner/ Rgds., Paul
New

Book Info

Publisher: Pragmatic Bookshelf
Tag: #book-advanced-hands-on-rust
Threads: 41

Are you this book's author? To be notified of all posts made about it, sign up an account then click here, then select 'watching' from the bell icon in the top right corner.

Get money off!

The Pragmatic Bookshelf

35% off any eBook

Simply use coupon code "devtalk.com" at checkout. See full details here.