That's not a good C++ example for comparison because that's using templates.
The whole point of templates is to have "code that generates other code". Therefore, omitting the types as much as possible lets the compiler deduce types so the programmer doesn't have to manually write multiple redundant versions with different types.
With normal functions, one parameterizes values but templates lets you parameterize types so explicitly putting a return type defeats the purpose of templates.
In the context of the Rust blog, the comment about type signatures seems to be about ABI Abstract Binary Interface backward compatibility of libraries and not templates generating code.
The whole point of templates is to have "code that generates other code". Therefore, omitting the types as much as possible lets the compiler deduce types so the programmer doesn't have to manually write multiple redundant versions with different types.
With normal functions, one parameterizes values but templates lets you parameterize types so explicitly putting a return type defeats the purpose of templates.
In the context of the Rust blog, the comment about type signatures seems to be about ABI Abstract Binary Interface backward compatibility of libraries and not templates generating code.