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 gives us a way to support any size future with a small value optimization. The
from_or_boxed
constructor attempts to store the wrapped future inStackFuture
's reserved space, but if it cannot then it store the future in a box and wrap the box instead.Note that doing this requires adding an "alloc" feature so this crate can continue to be used in pure no_std environments.
This also changes the panic behavior of
try_from
to not panic on alignment errors. To make it easier to determine why something went wrong, we make thehas_*_for*
functions public. We also adjust the panic messages inStackFuture::from
to make it clear which conditions failed.Finally, we introduce a testing matrix for GitHub actions to make sure we run tests both with and without allocation.