Red

Red

Rust Brain Teasers: leaking loop running forever? (page 50)

The author apparently contradicts himself, since in the discussion it becomes apparent that the program will be terminated after running for a while. So it’s definitely not running forever, and that’s the surprise in this puzzle.

Most Liked

herbert

herbert

Author of Hands-on Rust

The “Amnesia” teaser really is a double-layered puzzle, structured to teach the reader about a common Rust misconception.

A loop without a break will run forever (in as much as any process can run forever; eventually it’ll be terminated). So that’s not meant to be surprising: you can see there’s a loop and no break or terminate, panic or other process ending call.

In this case, it’s quietly leaking just under 4k of RAM per loop iteration–so eventually it will grind to a halt, and depending upon your Operating System’s “OOM killer” setup may be terminated.

The real surprise—and purpose of the teaser, from a teaching point of view—is to highlight that Rust’s extensive memory guarantees explicitly do not include protection from memory leaks. The language makes it tricky to accidentally leak memory, but it can be done. Even more surprisingly, forget and its ilk explicitly create memory leaks! That seems to fly in the face of what is expected from “memory safety”–so the discussion leads into covering why a) this isn’t a guarantee, and b) you may occasionally actually want to leak memory.

I hope that clears up the thought process a bit.

Where Next?

Popular Pragmatic Bookshelf topics Top

iPaul
page 37 ANTLRInputStream input = new ANTLRInputStream(is); as of ANTLR 4 .8 should be: CharStream stream = CharStreams.fromStream(i...
New
ianwillie
Hello Brian, I have some problems with running the code in your book. I like the style of the book very much and I have learnt a lot as...
New
yulkin
your book suggests to use Image.toByteData() to convert image to bytes, however I get the following error: "the getter ‘toByteData’ isn’t...
New
HarryDeveloper
Hi @venkats, It has been mentioned in the description of ‘Supervisory Job’ title that 2 things as mentioned below result in the same eff...
New
adamwoolhether
When trying to generate the protobuf .go file, I receive this error: Unknown flag: --go_opt libprotoc 3.12.3 MacOS 11.3.1 Googling ...
New
patoncrispy
I’m new to Rust and am using this book to learn more as well as to feed my interest in game dev. I’ve just finished the flappy dragon exa...
New
jgchristopher
“The ProductLive.Index template calls a helper function, live_component/3, that in turn calls on the modal component. ” Excerpt From: Br...
New
jwandekoken
Book: Programming Phoenix LiveView, page 142 (157/378), file lib/pento_web/live/product_live/form_component.ex, in the function below: d...
New
andreheijstek
After running /bin/setup, the first error was: The foreman' command exists in these Ruby versions: That was easy to fix: gem install fore...
New
Keton
When running the program in chapter 8, “Implementing Combat”, the printout Health before attack was never printed so I assumed something ...
New

Other popular topics Top

New
siddhant3030
I’m thinking of buying a monitor that I can rotate to use as a vertical monitor? Also, I want to know if someone is using it for program...
New
AstonJ
SpaceVim seems to be gaining in features and popularity and I just wondered how it compares with SpaceMacs in 2020 - anyone have any thou...
New
PragmaticBookshelf
Rust is an exciting new programming language combining the power of C with memory safety, fearless concurrency, and productivity boosters...
New
AstonJ
Just done a fresh install of macOS Big Sur and on installing Erlang I am getting: asdf install erlang 23.1.2 Configure failed. checking ...
New
AstonJ
In case anyone else is wondering why Ruby 3 doesn’t show when you do asdf list-all ruby :man_facepalming: do this first: asdf plugin-upd...
New
AstonJ
Continuing the discussion from Thinking about learning Crystal, let’s discuss - I was wondering which languages don’t GC - maybe we can c...
New
PragmaticBookshelf
Get the comprehensive, insider information you need for Rails 8 with the new edition of this award-winning classic. Sam Ruby @rubys ...
New
AstonJ
This is cool! DEEPSEEK-V3 ON M4 MAC: BLAZING FAST INFERENCE ON APPLE SILICON We just witnessed something incredible: the largest open-s...
New
CommunityNews
The amplituhedron, a shape at the heart of particle physics, appears to be deeply connected to the mathematics of paper folding.
New

Sub Categories: