No, I'm not sure, tbh. It's a concept I'm struggling with, and I reliant on others to correct/question me. I was trying to answer the question of whether things get passed by value or not, and I wanted to say yeah, loads of things do (anything who's size is known at compile-time) and to caution against thinking too much in C terms.
Here's where my thinking is now: a variable without a & in front is passed by value. A primitive type (i.e. something who's size is known) will be copied. So if a=4 and you pass it to a function, you can still refer to a later. A variable-length type (e.g. a String) can't be copied, so it is moved, and referring to it later will be an error.
A variable with a & in front is indeed a reference. It's a memory address, so it's of fixed size. For either a primitive or a variable-length type, the address can be copied when passed to a function, so it can be referred to again later without issue.
This feels more correct to me, so hopefully it is. If not, I'm sure someone will have a better answer soon (this community is growing well!).
doesn't come up on mastodon?
[email protected]
link