Me, after carefully reading Rust's ownership and borrow checker rules

https://lemmy.world/post/42469285

The rule of thumb I always tell people is that they should generally put owned data into struct fields and references into function parameters.

I like this rule of thumb and it goes nicely with the “if you have more than 3 arguments to a function, consider making a struct to pass the arguments in” rule of thumb because

You can have the struct use a named lifetime (or several) for the different parameters so it doesn’t own them!

Best of both worlds.