feat(rust): Allow setting custom client options #21007
Open
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.
We currently use Polars in our Rust web service and need to support custom certificates in our file connector.
While this functionality already exists in
object_store
via theClientOptions
struct (which allows setting root certificates through thewith_root_certificate
method), Polars does not yet expose this struct.This PR aims to add this capability to Polars.
Polars
CloudOptions
implementsPartialEq
,Eq
andHash
, which is not the case ofClientOptions
inobject_store
. Furthermore the defaults in polars forClientOptions
were not the same asobject_store
(see
get_client_options
function)So I decided to create a new type
PlClientOptions
with those defaults and only add what we want to set: the 3 previous fields (pure refactoring) + certificates (feature)Some questions:
PartialEq
,Eq
andHash
? If yes do you prefer the current approach with custom implems or the use ofderivative
crate with#[derivative(PartialEq="ignore")]
, which is more explicit and readable but adds a new dependency.#[cfg(any(feature = "aws", feature = "gcp", feature = "azure", feature = "http"))]
with#[cfg(feature = "cloud")]
?We can test this PR on AWS but not for GCP and Azure but since the code is the same, this test should be enough!
Thank you so much :)