It seems that the language server in VScode at least suggests the the types for x & y similar to the example #2 which does not work if I actually put in the types.
I can't give you a better answer than that the second snippet is not how let bindings and patterns work in Rust. Tuple patterns don't support type annotations inside them. No patterns do in fact. From the reference:
A let statement introduces a new set of variables, given by a pattern. The pattern is followed optionally by a type annotation and then either ends, or is followed by an initializer expression plus an optional else block.
Moreover the ascription describes/applies to the expression on the right (or the parameter of a function or closure), not the types of the bindings in the pattern per se.