feat(http/body-eos): EosRef<'a, E>: Clone + Copy#4312
Merged
Conversation
this commit introduces clone and copy implementations for the
`EosRef<'a, E>` type used to inspect and classify the outcome of a
request or response body.
as the documentation comment notes in the commit below, this enum only
contains immutable references to other values: a header map or an
error. other variants are empty tags.
```rust
pub enum EosRef<'a, E = Error> {
None,
Trailers(&'a HeaderMap),
Error(&'a E),
Cancelled,
}
```
this commit makes this type implicitly clonable.
Signed-off-by: katelyn martin <kate@buoyant.io>
c043c97 to
7b36b44
Compare
cratelyn
commented
Nov 19, 2025
Comment on lines
+136
to
+143
| /// A reference to the end of a stream can be cheaply cloned. | ||
| /// | ||
| /// Each of the variants are empty tags, or immutable references. | ||
| impl<'a, E> Clone for EosRef<'a, E> { | ||
| fn clone(&self) -> Self { | ||
| *self | ||
| } | ||
| } |
Member
Author
There was a problem hiding this comment.
https://gist.github.com/cratelyn/ff1e2d4299ae2626c229dc31aa21597b
#[derive(Clone)] will only work if E: Clone. this is manually implemented because we want this reference to be clonable even if E: Clone does not hold.
Member
Author
|
see #4246, where this "end of stream" middleware was previously introduced. |
Member
Author
|
see #4306, which builds upon this change to make further use of our |
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 commit introduces clone and copy implementations for the
EosRef<'a, E>type used to inspect and classify the outcome of arequest or response body.
as the documentation comment notes in the commit below, this enum only
contains immutable references to other values: a header map or an
error. other variants are empty tags.
this commit makes this type implicitly clonable.
Signed-off-by: katelyn martin kate@buoyant.io