That is not just a book about how to "cut potatoes". That is "A Creative Cooking Guide for Exercising Knife Skills", using potatoes as a medium. Similarly, your Rust book is an book on concurrency using Rust as a medium, as per the title: "Low-Level Concurrency in Practice". Both are complex topics, and both have picked a medium. Thus, they do not necessarily reflect on the underlying complexity of the medium, though concurrency in Rust is a complex topic due to the fact that the core language itself does a lot of work to make it "safe". Async would probably be an even better example of that.
However, in the case of initialization in C++ and in the case of move schematics in C++, these are topics that are complex because the core language has been accumulating complexity for a long time, and because the language designers cannot afford to break backwards compatibility. Which makes implementing and using move-schematics in C++, as an end-user of the language, much, much more complicated than in a language like Rust, that did not have to bolt this behavior on top of an already complicated language. Similarly with initialization, where C++ has accumulated many, syntactically overlapping forms of initialization, for both member and non-member variables variables