From my perspective, regardless of how people want to handle unintended overflow, explicit intended overflow for new languages and new code in older languages can reach consensus. For signed in C it's barely even a discussion since you can't rely on it while being portable.
If you want portable signed overflow, you *already* have to define functions for it, which can use __builtin_mul_overflow when available (add/sub is trivial anyway) and otherwise implement it by hand. GCC -fwrapv is also notably not complete and not a good idea to rely on too.
It's noisy, but C doesn't support custom arithmetic types like Rust. Swift has wrapping operators. Wrapping is only commonly used for unsigned integers though. It's rarely ever wanted for signed integers, and is mostly a quirk of hardware rather than something actually used.
https://doc.rust-lang.org/std/num/struct.Wrapping.html… is the Rust approach for something like a cryptographic cipher using modular arithmetic. It's not very normal to want it though and I don't think Rust's signed wrapping support is particularly useful, but rather it's mostly just there for completeness.
I can't actually come up with a good example of anything that'd want wrapping signed arithmetic. Lots of examples of unsigned, although in the vast majority of cases you don't but rather want a larger fixed-size type or if that isn't large enough a big integer type instead.
The checked_add, checked_sub, checked_mul methods are quite commonly used. I heavily use comparable functions in my C code implemented via the same underlying LLVM (and GCC) intrinsics when possible. It's needed a high % of the time to write correct code, way more than people do.