[Idea] `.func(args...)` as a sugar of constructor `InferredType::func(args...)`

I don't think this case is relevant at all for that. In some ways, that case is actually far easier than the common let mut v = vec![]; v.push(4);, because it's annotated that x is exactly Vec<u32>, and thus Rust doesn't need to figure that out, just run normal inference and trait logic.

This is why Rust requires full type signatures. Technically Rust could have just run one great big inference over the whole crate — after all, SML and friends do that just fine — but intentionally chose not to do that, to get better error messages and make things easier to understand on both humans and machines.

Having the signature provides a "firewall" so that this kind of thing is separable†. Once the signatures of all the functions are known, then those can be used to typecheck the bodies, since what happens in the body of one function doesn't impact the body of another function.

There are lots of things that make parallel compilation hard, but I really don't think that inside-a-single-body inference is anywhere close to the top of the list. Type inference and unification is a well-studied problem for which we have good algorithms.

† Well, except for auto-trait leakage through impl Trait.