Use copy_from_slice() over clone_from_slice() for u8 slice copies #33536
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Problem
clone_from_slice() would hypothetically visit each item in the slice and clone it whereas copy_from_slice() can memcpy the whole slice in one go.
Technically, Rust does the right thing for us by making clone_from_slice() defer to copy_from_slice() for types that implement Copy trait. However, we should still use the more efficient method directly to show intent.
Summary of Changes
Use
copy_from_slice()
overclone_from_slice()
for&[u8]
copies.As mentioned, Rust made it such that
copy_from_slice()
would get called in this instance starting from v1.52.0 as evidenced in this commit: rust-lang/rust@130fb243bd9e