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.
Closes #28.
This PR adds first-class support for asynchronous actions (i.e. non-blocking background work) leveraging the recently stabilized
futures
! 🎉A
Command
can be handed to the runtime for execution. As the futures comprising it finish, the produced messages will be handed back toApplication::update
.The
todos
example has been improved to showcase this feature. Now, it automatically saves and loads its state usingserde_json
.Changelog
Added
Command<T>
, which represents a batch offutures
producing a result of typeT
.Application::new
, which must return a(Self, Command<Message>)
. This allows applications to perform an async action at startup.Changed
Application::update
now must return aCommand<Message>
.Command::none
can be used if no async action is needed.Application::run
is a static method now, thanks to the newApplication::new
method.