-
Notifications
You must be signed in to change notification settings - Fork 76
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
WIP: Add generic async support #337
base: master
Are you sure you want to change the base?
Conversation
Should the |
To support |
@DanikVitek is this doable without |
# Conflicts: # Cargo.toml
I guess, if there is no need for the traits to be dyn-compatible, then the only difficulty is making the If the MSRV bump is not an issue, then it's even easier |
Ok, no. Both |
@DanikVitek can you support your assertion that the return types will need to be pin-boxed anyway by doing a minimal example in a repo outside of this pr with the right trait (BorshSerializeAsync/BorshDeserializeAsync) signatures and msrv 1.75? I think the common convention is that you cannot bump MSRV in patch releases, but in minor version releases you're free to do so. EDIT: if so (if they need to be pin-boxed anyway), i think we'll stick with |
I think the traits should be completely separate and not extend sync counterparts and lib user should be free to only implement/derive a subset or all of them if he/she desires. I was under the impression it's the case now, maybe i'm mistaken. |
Before diving into doing derive for new traits, i'd stop and do some tests with snapshots. @DanikVitek, can you choose some subset of types, which you consider core to borsh , and make sure the async counterparts serialize/deserialize to the same snapthos that the sync interface produces in tests? You're free to modify test code, as long you double check that existing snapshots aren't touched/renamed. Ideally this should be done by pure addition (no replacements/deletions) of test code (not modifying existing tests) and just checking the new snapshots are equal to older ones. This way it would be easy to verify during review that existing serialization format, provided by stable borsh subset, hasn't changed. If the existing test code changes, it kind of needs more attention to verify the old tests still run at all. It might be somewhat tedious to cover all existing (snapshot) tests at once, but that's one of the reason the feature should be made |
It appears that all of |
The conversation started in #150.
async-generic
PR: scouten/async-generic#17This implementation should be more flexible, as it allows for different runtimes and provides traits for manual implementation in case of any uncommon runtime.