addNewControl("New", 50, 20, 100, 50); What does that mean? Types don't help, it's just &str, int, int, int, int
agree that the named arguments are a nice solution here (which is why i like the python idea, you get the ability to annotate with names routinely)... .. but with the C++ overloading, you can "say it with types". How about..
addNewControl("New", Point2d(50,20), Size2d(100,50))
'addNewControl' could have all sorts of overloads, - e.g. omit the 'size', and you expect it to figure it out itself. Omit position, and you expect it to place somewhere sensible in the parent window.
Its funny how divisive this is. I've seen people argue against keyword args claiming that leveraging types is superior. (You're creating more semantics the compiler understands) - but I don't see them as mutually exclusive. I'd like both
Also, not sure why you want => instead of the simpler and clearer =.
that doesn't fit in rusts' grammar already; = can be used within expressions. (but it returns () unlike c++.. not sure of the use)