stayrascal commented on issue #295:
URL: 
https://github.com/apache/arrow-rs-object-store/issues/295#issuecomment-2780147007

   I'm trying to add the `list_opts`, but meet a problem about `Extensions` 
during passing it into a closure, which need the `Extensions` implemented 
`std::marker::Copy` trait, for example, the `list_paginated` method of 
`ListClientExt` will continue calling `list_request` in a closure to continue 
pull list result from object, if we add the `Extensions` parameter to 
`list_request` method of `ListClient`, which required the passed parameters are 
copied. So it looks that it's hard to add a `Extensions` parameter. 
   
   BTW, why don't using a `Option<HashMap>` instead of `Extensions` during 
defined the xxxOptions and covert it to `Extensions` and setting in http client 
builder, since after add the `Extensions` into some options, e.g. PutOptions, 
PutMultipartOpts, we have to re-implementation PartialEq and Eq trait. (I'm a 
newbie about Rust, didn't get what's means ' // That's 3 words. Instead, this 
is only 1 word.' below)
   ```
   /// A type map of protocol extensions.
   ///
   /// `Extensions` can be used by `Request` and `Response` to store
   /// extra data derived from the underlying protocol.
   #[derive(Clone, Default)]
   pub struct Extensions {
       // If extensions are never used, no need to carry around an empty 
HashMap.
       // That's 3 words. Instead, this is only 1 word.
       map: Option<Box<AnyMap>>,
   }
   ```


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to