this post was submitted on 19 Jan 2024
17 points (94.7% liked)
Rust
5967 readers
7 users here now
Welcome to the Rust community! This is a place to discuss about the Rust programming language.
Wormhole
Credits
- The icon is a modified version of the official rust logo (changing the colors to a gradient and black background)
founded 1 year ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
Don't forget debugging! Throughout my carreer, I never really forced myself to just go with debugger (especially since when games are considered, where you are dealing with tens of instances running the same Update, so manual breakpoints are usually harder to use than just scrolling through printed values in a lof) and over-relied on debug logging.
It was a mistake, and took me several years to realize that conditional breakpoints are a thing. And once you get into profiling, memory optimization and what-not, you will be greatefull that you've spend the time getting comfortable with all the debugging tools you can use.
Trying to learn a debugger or profiler as you go through solving a problem at a job sucks. Am currently in the process of having to debug and solve shader performance issue, and oh boy that's a lot of terms and tools I've never seen before, and most of the colleagues are as dumbfounded as I am, since when porting games you usually don't need to deal with low-level rendering.
I'm comfortable with debugging, but I rarely use it with Rust. With the language being so strict in everything, it's clear most of the time what's happening, and most situations can be resolved by simple logging of variables.
In JavaScript, I have to use the debugger all the time, since variables can get some really weird invalid values with the completely wrong type.
That's my favorite part about rust. Each step of the program is so well defined. No wondering if something will be uninitialized, throw, be null, or worse, what type of data you are working with in the first place. The option and result types have made working in languages without them a slog.