It would help if tutorials would advise you not to lean more heavily than you must on type inference. They have a second goal of selling you on the language, and inference is an attractive feature, in simple programs.
You often can't avoid relying on type inference in clever libraries, where the author can't necessarily spell the annotation. It is on the library author to keep that from leaking out to users.
Bugs in Rust and modern C++ are fewer and bigger, because they more often result from misunderstanding the problem or library preconditions than expressing the solution. There are plenty of such bugs, but you have those in C, too, on top of the others.
The problem of modern C++ is all of old C++ comes along for the ride. Even if you write only modern code, and manage to withstand the 'this once only' siren song there are all your (ex-)colleagues writing in their own style.
One of the major plusses of rust is that it gives you basic guarantees. C++ can't do that.
Type inference is super handy in a lot of places. The problem I've run into in the rust book and other intro docs is they almost always use type inference, which makes it harder to learn what is going on. I'd prefer they used explicit types to start and then ease into type inference.
You often can't avoid relying on type inference in clever libraries, where the author can't necessarily spell the annotation. It is on the library author to keep that from leaking out to users.
Bugs in Rust and modern C++ are fewer and bigger, because they more often result from misunderstanding the problem or library preconditions than expressing the solution. There are plenty of such bugs, but you have those in C, too, on top of the others.