It's only really good if you are totally confident in what is and is not a mistake though, as it'll do things like replace a struct with an int and be like "use a vec of indices and access the actual array with that since it's smaller to copy and pass around!" when you have no need to copy and pass it around, and it basically created a layer of indirection for no reason.
It'll then make up some reason as to why you DO need to pass it around and copy it, so you have to be REALLY sure about what the code should be doing.