I'm assuming that the function clones entity and caller, and leaves the default value for component_id. But is there more to it than this? Or is it just Syntactic Sugar?
That's a struct pattern that binds the entitry and caller fields to variables of the same name. This is known as destructuring, the variables being bound to the values of the struct via a move or, if the value implements Copy, via a copy. There is no implicit cloning.
In the case of function parameters, the pattern must be irrefutable (always able to match). The same is true for let without else, and for expressions. You may have even used some simple destructuring in those situations without thinking about it.
let (a, b) = (0, 1);
for (i, item) in iterator.enumerate() {}