You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
We have to use the "SetLenOnDrop" pattern (see stdlib Vec) here.
Keep the length in a separate variable, write it back on scope exit. To
help the compiler with alias analysis and stuff. We update the length
to handle panic in the iteration of the user's iterator, without
dropping any elements on the floor.
Note: This code was tested without the scope guard using the new option
-Zmutable-noalias, which had no effect here.
benchmark:
```
name before.txt ns/iter after.txt ns/iter diff ns/iter diff %
extend_with_constant 280 (1828 MB/s) 74 (6918 MB/s) -206 -73.57%
extend_with_range 1,285 (398 MB/s) 979 (522 MB/s) -306 -23.81%
extend_with_slice 29 (17655 MB/s) 14 (36571 MB/s) -15 -51.72%
```
0 commit comments