Yes, but if you have a large value type it will be on the stack unless you manually box it. Passing by value can get quite expensive quite fast, especially if the value keeps being passed up and down the call chain.
For large structs (or enums), move and copy both compile into memcpy. If the structures are large, this can take a lot of time.