Remove MaybeDone
from impl Join for Vec
#29
Merged
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.
This is the first step towards #22. Conceptually it moves us from the existing structure, which has all things together in a single enum:
Towards a separated input/output/metadata structure, which has far better locality:
This requires some unsafe at the end to transmute the
MaybeUninit<T>
toT
. Which also requires us to mess around with custom drop implementations. But as a result, it should have better locality since we only ever have to write the data once.Because this is the first iteration of a series of PRs, it has a lot more things going on. We introduce a new type:
Metadata
, which tracks the state. UnlikeMaybeDone
which wraps aT
,Metadata
is expected to be co-located with the state. Each piece ofMetadata
carries an enumState
, which tracks what state the futures and output are in.r? @eholk, this ties into some of the earlier work we've been doing. Tagging you so you can take a look if you're interested!