Make notification trait methods async and non-blocking #131
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.
Changed
LanguageServer
notification trait methodsasync fn
and non-blocking.This pull request makes all
LanguageServer
notification methodsasync fn
so that we can.await
on client responses inside these method bodies, once we implement proper server-to-client communication later on. Instead of spawning these requests withtokio::spawn()
, as we currently do inPrinter
, we could.await
them directly inside these methods without blocking the executor.This also replaces the internal
Delegate::delegate_request()
andDelegate::delegate_notification()
methods withdelegate_request!()
and thedelegate_notification!()
macros, respectively, to avoid the nested.await
s and avoiding lifetime woes caused by the lack of proper async closures in the language. Perhaps once async closures get added to Rust later on, we could re-evaluate whether to replace them with dedicated methods again.Affects #13.
CC @icsaszar