Rust's model of references confused me when I started out. I'd read that they were faster, so I tried to use them everywhere. You can't return a reference to a new vector though! Now I see them as primarily useful for signalling 'this parameter is not modified' rather than perf.