@@ -148,12 +148,12 @@ on the [heap][sh] for the actual data (`[1, 2, 3]`). Rust copies the address
148
148
of this heap allocation to an internal pointer, which is part of the vector
149
149
object placed on the stack (let's call it the data pointer).
150
150
151
- It is worth pointing out (even at the risk of repeating things ) that the vector
152
- object and its data live in separate memory regions instead of being a single
153
- contiguous memory allocation (due to reasons we will not go into at this point
154
- of time). These two parts of the vector (the one on the stack and one on the
155
- heap) must agree with each other at all times with regards to things like the
156
- length, capacity etc.
151
+ It is worth pointing out (even at the risk of stating the obvious ) that the
152
+ vector object and its data live in separate memory regions instead of being a
153
+ single contiguous memory allocation (due to reasons we will not go into at
154
+ this point of time). These two parts of the vector (the one on the stack and
155
+ one on the heap) must agree with each other at all times with regards to
156
+ things like the length, capacity etc.
157
157
158
158
When we move ` v ` to ` v2 ` , rust actually does a bitwise copy of the vector
159
159
object ` v ` into the stack allocation represented by ` v2 ` . This shallow copy
@@ -169,7 +169,7 @@ For example if we truncated the vector to just two elements through `v2`:
169
169
v2 . truncate (2 );
170
170
```
171
171
172
- and ` v1 ` were still accessible we'd end up with an invalid vector since it
172
+ and ` v1 ` were still accessible we'd end up with an invalid vector since ` v1 `
173
173
would not know that the heap data has been truncated. Now, the part of the
174
174
vector ` v1 ` on the stack does not agree with the corresponding part on the
175
175
heap. ` v1 ` still thinks there are three elements in the vector and will
0 commit comments