Yeah, the consuming
and borrowing
modifiers can be used on methods and parameters of copyable type too. For copyable types, these modifiers don't have as much impact on caller behavior, since the compiler can copy as necessary to maintain the apparent lifetime of values, and is more of an optimization. If a method implementation can consume a copy of one of its parameters, then it's usually more efficient to pass the argument as consuming
, so that the value can be forwarded directly to its eventual new owner without needing to copy it to keep the original alive.