Commit c8abfd2
committed
Fix pinned drop violations; make types Unpin where practical
* FutureGroup and StreamGroup are now `Unpin` types. At heart,
they kinda always were
* ChunkedVec is now built around pinning, fulfilling its destiny as
a data structure made specifically for pinnable data
* Brief changes to tests, to catch the bug that spawned this commit
Properly speaking, neither FutureGroup nor StreamGroup need to be
pinned. The futures/streams are placed in allocations managed by
ChunkedVec, which is responsible for keeping the futures/streams
pinned. This has been true. In fact, this means the entire
pin_project/`#[pin]` management done by these types was superfluous.
FutureGroup and StreamGroup don't store any pinnable data inline.
Going forward, these types can be safely exposed as Unpin. Even if
their implementation changes again, FutureGroup and StreamGroup are
never going to store their streams/futures on stack. Only inline
storage makes pinning self-referential data meaningful; heap
storage will always be stable. Thus, making them Unpin is totally
safe from the perspective of future compatibility.
The same goes for derived types. As long as the futures/streams
are polled on the heap, there's no way they will need to be pinned
in the old-fashioned (inline) way.1 parent 877daa6 commit c8abfd2
7 files changed
Lines changed: 146 additions & 168 deletions
File tree
- src
- concurrent_stream
- future
- stream
- utils
- tests
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
12 | 12 | | |
13 | 13 | | |
14 | 14 | | |
15 | | - | |
16 | 15 | | |
17 | 16 | | |
18 | 17 | | |
| |||
21 | 20 | | |
22 | 21 | | |
23 | 22 | | |
24 | | - | |
25 | 23 | | |
26 | 24 | | |
27 | 25 | | |
28 | 26 | | |
29 | 27 | | |
30 | 28 | | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
31 | 37 | | |
32 | 38 | | |
33 | 39 | | |
| |||
60 | 66 | | |
61 | 67 | | |
62 | 68 | | |
63 | | - | |
| 69 | + | |
64 | 70 | | |
65 | | - | |
| 71 | + | |
66 | 72 | | |
67 | 73 | | |
68 | 74 | | |
69 | 75 | | |
70 | 76 | | |
71 | 77 | | |
72 | | - | |
| 78 | + | |
73 | 79 | | |
74 | 80 | | |
75 | 81 | | |
76 | 82 | | |
77 | | - | |
78 | | - | |
79 | | - | |
| 83 | + | |
| 84 | + | |
80 | 85 | | |
81 | 86 | | |
82 | 87 | | |
83 | | - | |
84 | | - | |
| 88 | + | |
85 | 89 | | |
86 | 90 | | |
87 | 91 | | |
88 | | - | |
| 92 | + | |
89 | 93 | | |
90 | 94 | | |
91 | 95 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
41 | 41 | | |
42 | 42 | | |
43 | 43 | | |
44 | | - | |
45 | 44 | | |
46 | | - | |
47 | 45 | | |
48 | 46 | | |
49 | 47 | | |
| |||
63 | 61 | | |
64 | 62 | | |
65 | 63 | | |
66 | | - | |
67 | | - | |
| 64 | + | |
68 | 65 | | |
69 | | - | |
| 66 | + | |
70 | 67 | | |
71 | 68 | | |
72 | 69 | | |
73 | 70 | | |
74 | | - | |
| 71 | + | |
75 | 72 | | |
76 | 73 | | |
77 | 74 | | |
78 | 75 | | |
79 | 76 | | |
80 | 77 | | |
81 | | - | |
| 78 | + | |
82 | 79 | | |
83 | 80 | | |
84 | 81 | | |
85 | 82 | | |
86 | 83 | | |
87 | 84 | | |
88 | | - | |
89 | 85 | | |
90 | | - | |
91 | 86 | | |
92 | 87 | | |
93 | 88 | | |
| |||
107 | 102 | | |
108 | 103 | | |
109 | 104 | | |
110 | | - | |
111 | | - | |
| 105 | + | |
112 | 106 | | |
113 | | - | |
| 107 | + | |
114 | 108 | | |
115 | 109 | | |
116 | 110 | | |
117 | 111 | | |
118 | | - | |
| 112 | + | |
119 | 113 | | |
120 | 114 | | |
121 | 115 | | |
| |||
126 | 120 | | |
127 | 121 | | |
128 | 122 | | |
129 | | - | |
| 123 | + | |
130 | 124 | | |
131 | 125 | | |
132 | 126 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2 | 2 | | |
3 | 3 | | |
4 | 4 | | |
5 | | - | |
6 | 5 | | |
7 | 6 | | |
8 | 7 | | |
| |||
14 | 13 | | |
15 | 14 | | |
16 | 15 | | |
17 | | - | |
18 | 16 | | |
19 | 17 | | |
20 | 18 | | |
| |||
24 | 22 | | |
25 | 23 | | |
26 | 24 | | |
27 | | - | |
28 | 25 | | |
29 | 26 | | |
30 | 27 | | |
31 | 28 | | |
32 | 29 | | |
33 | 30 | | |
34 | 31 | | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
35 | 41 | | |
36 | 42 | | |
37 | 43 | | |
| |||
66 | 72 | | |
67 | 73 | | |
68 | 74 | | |
69 | | - | |
| 75 | + | |
70 | 76 | | |
71 | | - | |
| 77 | + | |
72 | 78 | | |
73 | 79 | | |
74 | 80 | | |
| |||
82 | 88 | | |
83 | 89 | | |
84 | 90 | | |
85 | | - | |
| 91 | + | |
86 | 92 | | |
87 | 93 | | |
88 | 94 | | |
| |||
92 | 98 | | |
93 | 99 | | |
94 | 100 | | |
95 | | - | |
| 101 | + | |
96 | 102 | | |
97 | 103 | | |
98 | 104 | | |
99 | 105 | | |
100 | | - | |
| 106 | + | |
101 | 107 | | |
102 | 108 | | |
103 | | - | |
| 109 | + | |
104 | 110 | | |
105 | 111 | | |
106 | 112 | | |
107 | 113 | | |
108 | 114 | | |
109 | 115 | | |
110 | 116 | | |
111 | | - | |
| 117 | + | |
112 | 118 | | |
113 | 119 | | |
114 | 120 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
57 | 57 | | |
58 | 58 | | |
59 | 59 | | |
60 | | - | |
61 | 60 | | |
62 | | - | |
63 | 61 | | |
64 | 62 | | |
65 | 63 | | |
| |||
189 | 187 | | |
190 | 188 | | |
191 | 189 | | |
192 | | - | |
| 190 | + | |
193 | 191 | | |
194 | 192 | | |
195 | 193 | | |
| |||
272 | 270 | | |
273 | 271 | | |
274 | 272 | | |
275 | | - | |
276 | | - | |
277 | | - | |
278 | | - | |
279 | | - | |
280 | | - | |
281 | | - | |
282 | | - | |
283 | | - | |
284 | | - | |
285 | | - | |
286 | | - | |
287 | | - | |
288 | | - | |
289 | | - | |
290 | | - | |
291 | | - | |
292 | | - | |
293 | | - | |
294 | | - | |
295 | | - | |
296 | | - | |
297 | | - | |
298 | | - | |
299 | | - | |
300 | | - | |
301 | | - | |
302 | | - | |
303 | | - | |
304 | | - | |
305 | | - | |
306 | | - | |
307 | | - | |
308 | | - | |
309 | | - | |
310 | | - | |
311 | | - | |
312 | 273 | | |
313 | 274 | | |
314 | 275 | | |
| |||
337 | 298 | | |
338 | 299 | | |
339 | 300 | | |
340 | | - | |
341 | | - | |
342 | | - | |
343 | | - | |
344 | | - | |
345 | | - | |
| 301 | + | |
346 | 302 | | |
347 | | - | |
| 303 | + | |
348 | 304 | | |
349 | 305 | | |
350 | 306 | | |
351 | 307 | | |
352 | | - | |
| 308 | + | |
353 | 309 | | |
354 | 310 | | |
355 | 311 | | |
| |||
358 | 314 | | |
359 | 315 | | |
360 | 316 | | |
361 | | - | |
362 | | - | |
363 | | - | |
364 | | - | |
365 | | - | |
| 317 | + | |
| 318 | + | |
366 | 319 | | |
367 | | - | |
| 320 | + | |
368 | 321 | | |
369 | 322 | | |
370 | 323 | | |
371 | 324 | | |
372 | 325 | | |
373 | 326 | | |
374 | | - | |
| 327 | + | |
375 | 328 | | |
376 | | - | |
| 329 | + | |
377 | 330 | | |
378 | | - | |
| 331 | + | |
379 | 332 | | |
380 | 333 | | |
381 | 334 | | |
| |||
384 | 337 | | |
385 | 338 | | |
386 | 339 | | |
387 | | - | |
| 340 | + | |
388 | 341 | | |
389 | 342 | | |
390 | 343 | | |
| |||
393 | 346 | | |
394 | 347 | | |
395 | 348 | | |
396 | | - | |
| 349 | + | |
397 | 350 | | |
398 | 351 | | |
399 | 352 | | |
400 | | - | |
| 353 | + | |
401 | 354 | | |
402 | 355 | | |
403 | | - | |
| 356 | + | |
404 | 357 | | |
405 | 358 | | |
406 | 359 | | |
| |||
410 | 363 | | |
411 | 364 | | |
412 | 365 | | |
413 | | - | |
| 366 | + | |
414 | 367 | | |
415 | 368 | | |
416 | 369 | | |
| |||
0 commit comments