- function arguments are moved into the called function
- you can call a function with a ref, and then you can keep using it in the calling function, because there is a blanket impl of Copy for refs
- you can call a function with a ref mut, and then you can keep using it in the calling function because ... ???