I don't know about tonic, but as a matter of Rust semantics, the way in which the two versions are different is that in the first, client will be dropped (deallocated) at the end of the containing block, and in the second, the client (not stored in any variable) will be dropped right after response is given its value.
This does not have any effect at all on which things are mutated or which things are shared versus independent, so
when the self is called by multiple caller concurrently.
there will be no difference unless there is some reason it matters when the clone is dropped.