pcsc: Allow a transaction to own the underlying card. #27
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.
Since Rust's support for self-referencial data structures is weak,
there are cases where it is useful for a transaction to own the card
and not just for it to hold a mutable reference. In these cases,
the caller needs to explicitly end the transaction to recover the
underlying card, but that is acceptable.
Generalize
Transaction
to be generic over aBorrowMut<Card>
.Add new functions
Card::begin_transaction_owned
andCard::begin_transaction2_owned
to create this type of transaction.Change
Transaction::end
to return the underlying card. And, add avariant,
Transaction::end2
, to unconditionally return theunderlying card independent of whether ending the transaction
succeeded.