refactor: Allow Builder
to be cloned by removing unnecessary reference and lifetime.
#51
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.
What kind of change does this PR introduce?
request::Client
is already cloneable since it's just anArc<ClientRef>
. So let's get rid of all of the&'a Client
stuff and instead just have Builder own a Client, and clone it when needed.What is the current behavior?
Builder
has a&'a Client
.What is the new behavior?
Builder
owns its ownClient
, and therefore is able to be#[derive(Clone)]
.Additional context
The impetus for this change is that I wanted to build support for automatically paginating
Builder
s in order to transparently fetch more rows than a single request is able to. Since executing a builder consumes it, I needed a way to keep the original builder around after executing, in order to update itsrange
and make the request for the next page of results.A much trimmed down example of what this could look like:
A side benefit here is that (at least IMO) this is more ergonomic: no more lifetimes cluttering any struct that needs to hold a
Builder