Skip to content

Commit 116c4ff

Browse files
committed
fix cargo clippy
1 parent a0c3186 commit 116c4ff

File tree

4 files changed

+12
-18
lines changed

4 files changed

+12
-18
lines changed

object_store/src/aws/builder.rs

+5-8
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ pub struct AmazonS3Builder {
160160
/// Copy if not exists
161161
copy_if_not_exists: Option<ConfigValue<S3CopyIfNotExists>>,
162162
/// Put precondition
163-
conditional_put: Option<ConfigValue<S3ConditionalPut>>,
163+
conditional_put: ConfigValue<S3ConditionalPut>,
164164
/// Ignore tags
165165
disable_tagging: ConfigValue<bool>,
166166
/// Encryption (See [`S3EncryptionConfigKey`])
@@ -523,7 +523,7 @@ impl AmazonS3Builder {
523523
self.copy_if_not_exists = Some(ConfigValue::Deferred(value.into()))
524524
}
525525
AmazonS3ConfigKey::ConditionalPut => {
526-
self.conditional_put = Some(ConfigValue::Deferred(value.into()))
526+
self.conditional_put = ConfigValue::Deferred(value.into())
527527
}
528528
AmazonS3ConfigKey::RequestPayer => {
529529
self.request_payer = ConfigValue::Deferred(value.into())
@@ -581,9 +581,7 @@ impl AmazonS3Builder {
581581
AmazonS3ConfigKey::CopyIfNotExists => {
582582
self.copy_if_not_exists.as_ref().map(ToString::to_string)
583583
}
584-
AmazonS3ConfigKey::ConditionalPut => {
585-
self.conditional_put.as_ref().map(ToString::to_string)
586-
}
584+
AmazonS3ConfigKey::ConditionalPut => Some(self.conditional_put.to_string()),
587585
AmazonS3ConfigKey::DisableTagging => Some(self.disable_tagging.to_string()),
588586
AmazonS3ConfigKey::RequestPayer => Some(self.request_payer.to_string()),
589587
AmazonS3ConfigKey::Encryption(key) => match key {
@@ -827,7 +825,7 @@ impl AmazonS3Builder {
827825

828826
/// Configure how to provide conditional put operations
829827
pub fn with_conditional_put(mut self, config: S3ConditionalPut) -> Self {
830-
self.conditional_put = Some(config.into());
828+
self.conditional_put = config.into();
831829
self
832830
}
833831

@@ -893,7 +891,6 @@ impl AmazonS3Builder {
893891
let region = self.region.unwrap_or_else(|| "us-east-1".to_string());
894892
let checksum = self.checksum_algorithm.map(|x| x.get()).transpose()?;
895893
let copy_if_not_exists = self.copy_if_not_exists.map(|x| x.get()).transpose()?;
896-
let put_precondition = self.conditional_put.map(|x| x.get()).transpose()?;
897894

898895
let credentials = if let Some(credentials) = self.credentials {
899896
credentials
@@ -1034,7 +1031,7 @@ impl AmazonS3Builder {
10341031
disable_tagging: self.disable_tagging.get()?,
10351032
checksum,
10361033
copy_if_not_exists,
1037-
conditional_put: put_precondition,
1034+
conditional_put: self.conditional_put.get()?,
10381035
encryption_headers,
10391036
request_payer: self.request_payer.get()?,
10401037
};

object_store/src/aws/client.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,7 @@ pub(crate) struct S3Config {
201201
pub disable_tagging: bool,
202202
pub checksum: Option<Checksum>,
203203
pub copy_if_not_exists: Option<S3CopyIfNotExists>,
204-
pub conditional_put: Option<S3ConditionalPut>,
204+
pub conditional_put: S3ConditionalPut,
205205
pub request_payer: bool,
206206
pub(super) encryption_headers: S3EncryptionHeaders,
207207
}

object_store/src/aws/mod.rs

+4-8
Original file line numberDiff line numberDiff line change
@@ -169,8 +169,7 @@ impl ObjectStore for AmazonS3 {
169169

170170
match (opts.mode, &self.client.config.conditional_put) {
171171
(PutMode::Overwrite, _) => request.idempotent(true).do_put().await,
172-
(PutMode::Create | PutMode::Update(_), None) => Err(Error::NotImplemented),
173-
(PutMode::Create, Some(S3ConditionalPut::ETagMatch)) => {
172+
(PutMode::Create, S3ConditionalPut::ETagMatch) => {
174173
match request.header(&IF_NONE_MATCH, "*").do_put().await {
175174
// Technically If-None-Match should return NotModified but some stores,
176175
// such as R2, instead return PreconditionFailed
@@ -184,11 +183,11 @@ impl ObjectStore for AmazonS3 {
184183
r => r,
185184
}
186185
}
187-
(PutMode::Create, Some(S3ConditionalPut::Dynamo(d))) => {
186+
(PutMode::Create, S3ConditionalPut::Dynamo(d)) => {
188187
d.conditional_op(&self.client, location, None, move || request.do_put())
189188
.await
190189
}
191-
(PutMode::Update(v), Some(put)) => {
190+
(PutMode::Update(v), put) => {
192191
let etag = v.e_tag.ok_or_else(|| Error::Generic {
193192
store: STORE,
194193
source: "ETag required for conditional put".to_string().into(),
@@ -561,7 +560,6 @@ mod tests {
561560
let integration = config.build().unwrap();
562561
let config = &integration.client.config;
563562
let test_not_exists = config.copy_if_not_exists.is_some();
564-
let test_conditional_put = config.conditional_put.is_some();
565563

566564
put_get_delete_list(&integration).await;
567565
get_opts(&integration).await;
@@ -594,9 +592,7 @@ mod tests {
594592
if test_not_exists {
595593
copy_if_not_exists(&integration).await;
596594
}
597-
if test_conditional_put {
598-
put_opts(&integration, true).await;
599-
}
595+
put_opts(&integration, true).await;
600596

601597
// run integration test with unsigned payload enabled
602598
let builder = AmazonS3Builder::from_env().with_unsigned_payload(true);

object_store/src/aws/precondition.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ impl Parse for S3CopyIfNotExists {
126126
/// Configure how to provide conditional put support for [`AmazonS3`].
127127
///
128128
/// [`AmazonS3`]: super::AmazonS3
129-
#[derive(Debug, Clone, Eq, PartialEq)]
129+
#[derive(Debug, Clone, Eq, PartialEq, Default)]
130130
#[allow(missing_copy_implementations)]
131131
#[non_exhaustive]
132132
pub enum S3ConditionalPut {
@@ -136,6 +136,7 @@ pub enum S3ConditionalPut {
136136
/// Encoded as `etag` ignoring whitespace
137137
///
138138
/// [HTTP precondition]: https://datatracker.ietf.org/doc/html/rfc9110#name-preconditions
139+
#[default]
139140
ETagMatch,
140141

141142
/// The name of a DynamoDB table to use for coordination

0 commit comments

Comments
 (0)