Replace one of the examples of the aliasing rule #2715
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.
The existing example is too similar to the first one, since it also is demonstrating a dangling reference to a heap allocation after modifying the
Vec
. This new example demonstrates a different angle to the aliasing rule: That it prevents incorrect optimizations. This gives us a chance to bring up undefined behavior, since that can cause problems in much more subtle ways.I'm not sure if this example is quite correct, though. I'm still trying to figure out why exactly this might get mis-compiled in C, but that subtlety may not matter for the purpose of showing the point of the aliasing rule.