I've saved most of this thread so that I can link it when someone asks me why I don't use Rust for systems development yet. In some ways Rust is worse than C++ with these completely out of orbit contrived math problems in the type system.
C is a simple language, but it's still difficult for beginners to understand systems software because it's complex. Adding something like this were people are inventing complexity in the language itself out of boredom is a recipe for disaster and is much worse than the terrible things than can happen in C.
Please just learn to write simple code and solve hard problems, rather than writing complex code to solve contrived problems.
I'm sure every language has examples of code where it was written to be crazy on purpose, This is one of those.
Like when you write a raytracer in CMake, or Meson build, or C++ templates. Etc etc.
Or when you compile your program to only mov instructions, because mov instructions are turing complete (should this be a reason we shouldn't use x86?).
I'm sure there are plenty more examples.
Nobody is suggesting you actually use this stuff. Therefore it seems a bit silly to point at it and say 'don't use this language because people do silly things for fun in it!!!!11!!1'
Rust just exposes the complexity an equivalent program in C leaves you to find at runtime. It doesn't have to prevent every bug, just substantially more than the languages it might replace.
You can write simple or complex code in any language.
The Obfuscated C contests exist so I really don't see what points you think you're making.
Some people have fun pushing their tools to their limits. That doesn't mean they do the same thing in production code.
C is a simple language, but it's still difficult for beginners to understand systems software because it's complex. Adding something like this were people are inventing complexity in the language itself out of boredom is a recipe for disaster and is much worse than the terrible things than can happen in C.
Please just learn to write simple code and solve hard problems, rather than writing complex code to solve contrived problems.