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.
Previously, the core client implementation was written in async style, and then the sync API was layered on top of it. Async Rust has non-negligible costs when it comes to compilation times and code maintenance. Given how much the async library ecosystem is in still in flux (and for how long it has been), maintaining crates outside the scope of this NATS client and constantly upgrading dependencies is becoming untenable.
This PR simplifies the core client implementation so that it's written in traditional sync style. The async API is presently gone but I will soon add it in a separate PR - it'll just be an adapter on top of the sync client. This way users of sync Rust don't have to bring in numerous async dependencies (improving compilation times) and code maintenance will be simpler.