I'm sorry, but this implication enrages me.
If I'm just trying to print out "Hello World", why would I use some kind of list and a pointer?
You touched on an example of where Rust simplifies non-GC memory management.
Its nice that there are various ways to track when you are done with pointers (and memory referenced by them) across the code.
I think some of the techniques are very useful. But its taken to an extreme in Rust where you will do anything to avoid GC.
Some of that stuff involving tracking and matching ownership or correspondence across the code would work better outside of a purely sort of one-dimensional textual representation. This is an example that illustrates why textual source code is a legacy.
But it IS text, and often, with Rust, its too complicated, and often not easily applied to typical "systems" programming (which is quite often used to actually mean some ordinary types of user applications, or programs that do the same thing).
Personally I think Rust could maintain a good portion of its core strength while losing about half of its complexity.
Also, in terms of an introduction it would be nice to see some real useful "systems programming" examples where the core memory tracking and other capabilities make Rust stand out. Hello World isn't a good example of this.
We want the compiler to be smart and be able to avoid collecting things at runtime when possible and practical, and for the programmer to be able to effectively indicate corresponding data so the compiler will know when it should be deallocated. However, we also need the code to be clear and concise and to avoid making the programmer do routine work when its not necessary.