Implement an easier way to get Send Serve and Stub#480
Open
stevefan1999-personal wants to merge 2 commits intogoogle:mainfrom
Open
Implement an easier way to get Send Serve and Stub#480stevefan1999-personal wants to merge 2 commits intogoogle:mainfrom
stevefan1999-personal wants to merge 2 commits intogoogle:mainfrom
Conversation
4e7ff9e to
eebdd45
Compare
tikue
requested changes
Oct 27, 2024
|
|
||
| /// A connection to a remote service. | ||
| /// Calls the service with requests of type `Req` and receives responses of type `Resp`. | ||
| pub trait SendStub: Send { |
Collaborator
There was a problem hiding this comment.
Would it be possible to use return-type notation to avoid duplicating the trait definition? rust-lang/rust#129629
pub trait SendStub: Stub + Send where <Self as Stub>::call(..): Send {}
impl<S: Stub + Send> SendStub for S where <S as Stub>::call(..): Send {}Benefits of doing it this way:
- The implementations for
ChannelandServedon't need to be duplicated - the trait method can still be an
async fn.
I think the same trick can also be applied to Serve and the proc macro-generated service trait.
Of course, the downside is this is still an experimental feature. But I think I'd rather think about solving this in a forward-thinking way. We can add a feature gate for it here, as well, so that it's only enabled if compiled with a tarpc Cargo feature that enables unstable features.
Contributor
Author
There was a problem hiding this comment.
Will work on it once it is stablized
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
This PR improves upon #475 by observing
trait-variantoutput and closely imitating the behavior without major breaking changes. There is no need to fill in a lot of unnecessary Send Sync bounds after this which clogged up in the original idea for #475 by using a downgrade trick using extension trait. All existing codes including the examples and the tests compiles without any changes.