It would help if you clarified. I don't want to try to clarify things and end up putting words into your mouth.
Like just as an example - I can write an allocator and toggle register bits etc. All of that requires unsafe code, raw pointers, etc.
But I can then build on top of that in safe Rust, with all the guarantees that brings. I still have to check that the unsafe allocator or whatever work soundly, but Rust checks the stuff on top of it.
What’s the point of high-level languages at all if they’re just going to be implemented on top of a CPU that will happily chase raw pointers and divide by zero if you ask it to?
Because everything else can be expressed safely and more concisely than writing it in C or raw asm. And you have to pay virtually zero abstraction costs for the pleasure: see Rust’s comparative performance in language shootouts. Not infrequently Rust even beats C’s performance due to better visibility for optimizations.
And when you do still have to resort to unsafe low-level bit twiddling, you get to keep all the other benefits of having a modern, powerful language.
Do you genuinely think the Linux kernel is just throwing Rust in to attract kids who just follow the latest programming fads?
Making sure Rust can work in embedded environments is absolutely a design goal, and choices around this are made explicitly.
e.g?
I am curious
How is "the design of async/await." for embedded programming?
This means RTOS-like projects can use it for tasks, and it works well. Embassy is an example of such a project.
(Yet, I should also point out that you don't have to: at work we keep ours synchronous, for Reasons. Rust lets you do what you want.)