Skip to content

Commit ddb5d2a

Browse files
authored
Bump rust edition to 2024, rust version to 1.85 (#515)
* Bump the msrv to 1.67.1 * Bump rust edition * Remove dependency pinning in CI to satisfy msrv check * Fix fmt
1 parent fc23712 commit ddb5d2a

40 files changed

+209
-190
lines changed

.github/workflows/rust.yml

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -52,19 +52,6 @@ jobs:
5252
- uses: actions/checkout@v5
5353
- name: Install cargo-msrv
5454
run: cargo install cargo-msrv
55-
- name: Downgrade object_store dependencies
56-
# Necessary because tokio 1.30.0 updates MSRV to 1.63
57-
# and url 2.5.1, updates to 1.67
58-
run: |
59-
cargo update -p tokio --precise 1.29.1
60-
cargo update -p url --precise 2.5.0
61-
cargo update -p once_cell --precise 1.20.3
62-
cargo update -p tracing-core --precise 0.1.33
63-
cargo update -p tracing-attributes --precise 0.1.28
64-
cargo update -p parking_lot --precise 0.12.4
65-
cargo update -p parking_lot_core --precise 0.9.11
66-
cargo update -p lock_api --precise 0.4.13
67-
cargo update -p syn --precise 2.0.106
6855
- name: Check
6956
run: |
7057
# run `cargo msrv verify` to see problems

Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,13 @@
1818
[package]
1919
name = "object_store"
2020
version = "0.12.4"
21-
edition = "2021"
21+
edition = "2024"
2222
license = "MIT/Apache-2.0"
2323
readme = "README.md"
2424
description = "A generic object store interface for uniformly interacting with AWS S3, Google Cloud Storage, Azure Blob Storage and local files."
2525
keywords = ["object", "storage", "cloud"]
2626
repository = "https://github.com/apache/arrow-rs-object-store"
27-
rust-version = "1.64.0"
27+
rust-version = "1.85"
2828
include = ["src/**/*.rs", "README.md", "LICENSE.txt", "NOTICE.txt", "Cargo.toml"]
2929

3030
[package.metadata.docs.rs]

src/aws/builder.rs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,11 @@ use crate::aws::{
2424
AmazonS3, AwsCredential, AwsCredentialProvider, Checksum, S3ConditionalPut, S3CopyIfNotExists,
2525
STORE,
2626
};
27-
use crate::client::{http_connector, HttpConnector, TokenCredentialProvider};
27+
use crate::client::{HttpConnector, TokenCredentialProvider, http_connector};
2828
use crate::config::ConfigValue;
2929
use crate::{ClientConfigKey, ClientOptions, Result, RetryConfig, StaticCredentialProvider};
30-
use base64::prelude::BASE64_STANDARD;
3130
use base64::Engine;
31+
use base64::prelude::BASE64_STANDARD;
3232
use itertools::Itertools;
3333
use md5::{Digest, Md5};
3434
use reqwest::header::{HeaderMap, HeaderValue};
@@ -75,7 +75,10 @@ enum Error {
7575
#[error("Invalid Zone suffix for bucket '{bucket}'")]
7676
ZoneSuffix { bucket: String },
7777

78-
#[error("Invalid encryption type: {}. Valid values are \"AES256\", \"sse:kms\", \"sse:kms:dsse\" and \"sse-c\".", passed)]
78+
#[error(
79+
"Invalid encryption type: {}. Valid values are \"AES256\", \"sse:kms\", \"sse:kms:dsse\" and \"sse-c\".",
80+
passed
81+
)]
7982
InvalidEncryptionType { passed: String },
8083

8184
#[error(

src/aws/client.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,12 @@ use crate::aws::builder::S3EncryptionHeaders;
1919
use crate::aws::checksum::Checksum;
2020
use crate::aws::credential::{AwsCredential, CredentialExt};
2121
use crate::aws::{
22-
AwsAuthorizer, AwsCredentialProvider, S3ConditionalPut, S3CopyIfNotExists, COPY_SOURCE_HEADER,
22+
AwsAuthorizer, AwsCredentialProvider, COPY_SOURCE_HEADER, S3ConditionalPut, S3CopyIfNotExists,
2323
STORE, STRICT_PATH_ENCODE_SET, TAGS_HEADER,
2424
};
2525
use crate::client::builder::{HttpRequestBuilder, RequestBuilderError};
2626
use crate::client::get::GetClient;
27-
use crate::client::header::{get_etag, HeaderConfig};
27+
use crate::client::header::{HeaderConfig, get_etag};
2828
use crate::client::header::{get_put_result, get_version};
2929
use crate::client::list::ListClient;
3030
use crate::client::retry::{RetryContext, RetryExt};
@@ -40,8 +40,8 @@ use crate::{
4040
PutPayload, PutResult, Result, RetryConfig, TagSet,
4141
};
4242
use async_trait::async_trait;
43-
use base64::prelude::BASE64_STANDARD;
4443
use base64::Engine;
44+
use base64::prelude::BASE64_STANDARD;
4545
use bytes::{Buf, Bytes};
4646
use http::header::{
4747
CACHE_CONTROL, CONTENT_DISPOSITION, CONTENT_ENCODING, CONTENT_LANGUAGE, CONTENT_LENGTH,
@@ -50,7 +50,7 @@ use http::header::{
5050
use http::{HeaderMap, HeaderName, Method};
5151
use itertools::Itertools;
5252
use md5::{Digest, Md5};
53-
use percent_encoding::{utf8_percent_encode, PercentEncode};
53+
use percent_encoding::{PercentEncode, utf8_percent_encode};
5454
use quick_xml::events::{self as xml_events};
5555
use ring::digest;
5656
use ring::digest::Context;
@@ -953,10 +953,10 @@ fn encode_path(path: &Path) -> PercentEncode<'_> {
953953
#[cfg(test)]
954954
mod tests {
955955
use super::*;
956-
use crate::client::mock_server::MockServer;
957956
use crate::client::HttpClient;
958-
use http::header::CONTENT_LENGTH;
957+
use crate::client::mock_server::MockServer;
959958
use http::Response;
959+
use http::header::CONTENT_LENGTH;
960960

961961
#[tokio::test]
962962
async fn test_create_multipart_has_content_length() {

src/aws/credential.rs

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ use crate::{CredentialProvider, Result, RetryConfig};
2525
use async_trait::async_trait;
2626
use bytes::Buf;
2727
use chrono::{DateTime, Utc};
28-
use http::header::{HeaderMap, HeaderName, HeaderValue, AUTHORIZATION};
28+
use http::header::{AUTHORIZATION, HeaderMap, HeaderName, HeaderValue};
2929
use http::{Method, StatusCode};
3030
use percent_encoding::utf8_percent_encode;
3131
use serde::Deserialize;
@@ -863,8 +863,8 @@ struct CreateSessionOutput {
863863
mod tests {
864864
use super::*;
865865
use crate::aws::{AmazonS3Builder, AmazonS3ConfigKey};
866-
use crate::client::mock_server::MockServer;
867866
use crate::client::HttpClient;
867+
use crate::client::mock_server::MockServer;
868868
use http::Response;
869869
use reqwest::{Client, Method};
870870
use std::env;
@@ -908,7 +908,10 @@ mod tests {
908908
};
909909

910910
signer.authorize(&mut request, None);
911-
assert_eq!(request.headers().get(&AUTHORIZATION).unwrap(), "AWS4-HMAC-SHA256 Credential=AKIAIOSFODNN7EXAMPLE/20220806/us-east-1/ec2/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=a3c787a7ed37f7fdfbfd2d7056a3d7c9d85e6d52a2bfbec73793c0be6e7862d4")
911+
assert_eq!(
912+
request.headers().get(&AUTHORIZATION).unwrap(),
913+
"AWS4-HMAC-SHA256 Credential=AKIAIOSFODNN7EXAMPLE/20220806/us-east-1/ec2/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=a3c787a7ed37f7fdfbfd2d7056a3d7c9d85e6d52a2bfbec73793c0be6e7862d4"
914+
)
912915
}
913916

914917
#[test]
@@ -949,7 +952,10 @@ mod tests {
949952
};
950953

951954
signer.authorize(&mut request, None);
952-
assert_eq!(request.headers().get(&AUTHORIZATION).unwrap(), "AWS4-HMAC-SHA256 Credential=AKIAIOSFODNN7EXAMPLE/20220806/us-east-1/ec2/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date;x-amz-request-payer, Signature=7030625a9e9b57ed2a40e63d749f4a4b7714b6e15004cab026152f870dd8565d")
955+
assert_eq!(
956+
request.headers().get(&AUTHORIZATION).unwrap(),
957+
"AWS4-HMAC-SHA256 Credential=AKIAIOSFODNN7EXAMPLE/20220806/us-east-1/ec2/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date;x-amz-request-payer, Signature=7030625a9e9b57ed2a40e63d749f4a4b7714b6e15004cab026152f870dd8565d"
958+
)
953959
}
954960

955961
#[test]
@@ -990,7 +996,10 @@ mod tests {
990996
};
991997

992998
authorizer.authorize(&mut request, None);
993-
assert_eq!(request.headers().get(&AUTHORIZATION).unwrap(), "AWS4-HMAC-SHA256 Credential=AKIAIOSFODNN7EXAMPLE/20220806/us-east-1/ec2/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=653c3d8ea261fd826207df58bc2bb69fbb5003e9eb3c0ef06e4a51f2a81d8699");
999+
assert_eq!(
1000+
request.headers().get(&AUTHORIZATION).unwrap(),
1001+
"AWS4-HMAC-SHA256 Credential=AKIAIOSFODNN7EXAMPLE/20220806/us-east-1/ec2/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=653c3d8ea261fd826207df58bc2bb69fbb5003e9eb3c0ef06e4a51f2a81d8699"
1002+
);
9941003
}
9951004

9961005
#[test]
@@ -1113,7 +1122,10 @@ mod tests {
11131122
};
11141123

11151124
authorizer.authorize(&mut request, None);
1116-
assert_eq!(request.headers().get(&AUTHORIZATION).unwrap(), "AWS4-HMAC-SHA256 Credential=H20ABqCkLZID4rLe/20220809/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=9ebf2f92872066c99ac94e573b4e1b80f4dbb8a32b1e8e23178318746e7d1b4d")
1125+
assert_eq!(
1126+
request.headers().get(&AUTHORIZATION).unwrap(),
1127+
"AWS4-HMAC-SHA256 Credential=H20ABqCkLZID4rLe/20220809/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=9ebf2f92872066c99ac94e573b4e1b80f4dbb8a32b1e8e23178318746e7d1b4d"
1128+
)
11171129
}
11181130

11191131
#[tokio::test]
@@ -1320,7 +1332,10 @@ mod tests {
13201332
(" a b c ", "a b c"),
13211333
("a \t b c ", "a b c"),
13221334
("\"a \t b c ", "\"a b c"),
1323-
(" \t\n\u{000b}\r\u{000c}a \t\n\u{000b}\r\u{000c} b \t\n\u{000b}\r\u{000c} c \t\n\u{000b}\r\u{000c}", "a b c"),
1335+
(
1336+
" \t\n\u{000b}\r\u{000c}a \t\n\u{000b}\r\u{000c} b \t\n\u{000b}\r\u{000c} c \t\n\u{000b}\r\u{000c}",
1337+
"a b c",
1338+
),
13241339
];
13251340

13261341
for (input, expected) in test_cases {

src/aws/mod.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,9 @@ use std::{sync::Arc, time::Duration};
3737
use url::Url;
3838

3939
use crate::aws::client::{CompleteMultipartMode, PutPartPayload, RequestError, S3Client};
40+
use crate::client::CredentialProvider;
4041
use crate::client::get::GetClientExt;
4142
use crate::client::list::{ListClient, ListClientExt};
42-
use crate::client::CredentialProvider;
4343
use crate::multipart::{MultipartStore, PartId};
4444
use crate::signer::Signer;
4545
use crate::util::STRICT_ENCODE_SET;
@@ -358,7 +358,7 @@ impl ObjectStore for AmazonS3 {
358358
None => {
359359
return Err(Error::NotSupported {
360360
source: "S3 does not support copy-if-not-exists".to_string().into(),
361-
})
361+
});
362362
}
363363
};
364364

@@ -493,14 +493,14 @@ impl PaginatedListStore for AmazonS3 {
493493
#[cfg(test)]
494494
mod tests {
495495
use super::*;
496+
use crate::ClientOptions;
497+
use crate::client::SpawnedReqwestConnector;
496498
use crate::client::get::GetClient;
497499
use crate::client::retry::RetryContext;
498-
use crate::client::SpawnedReqwestConnector;
499500
use crate::integration::*;
500501
use crate::tests::*;
501-
use crate::ClientOptions;
502-
use base64::prelude::BASE64_STANDARD;
503502
use base64::Engine;
503+
use base64::prelude::BASE64_STANDARD;
504504
use http::HeaderMap;
505505

506506
const NON_EXISTENT_NAME: &str = "nonexistentname";

src/azure/builder.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ use crate::azure::credential::{
2121
ImdsManagedIdentityProvider, WorkloadIdentityOAuthProvider,
2222
};
2323
use crate::azure::{AzureCredential, AzureCredentialProvider, MicrosoftAzure, STORE};
24-
use crate::client::{http_connector, HttpConnector, TokenCredentialProvider};
24+
use crate::client::{HttpConnector, TokenCredentialProvider, http_connector};
2525
use crate::config::ConfigValue;
2626
use crate::{ClientConfigKey, ClientOptions, Result, RetryConfig, StaticCredentialProvider};
2727
use percent_encoding::percent_decode_str;

src/azure/client.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,25 +20,25 @@ use crate::azure::credential::*;
2020
use crate::azure::{AzureCredentialProvider, STORE};
2121
use crate::client::builder::HttpRequestBuilder;
2222
use crate::client::get::GetClient;
23-
use crate::client::header::{get_put_result, HeaderConfig};
23+
use crate::client::header::{HeaderConfig, get_put_result};
2424
use crate::client::list::ListClient;
2525
use crate::client::retry::{RetryContext, RetryExt};
2626
use crate::client::{GetOptionsExt, HttpClient, HttpError, HttpRequest, HttpResponse};
2727
use crate::list::{PaginatedListOptions, PaginatedListResult};
2828
use crate::multipart::PartId;
29-
use crate::util::{deserialize_rfc1123, GetRange};
29+
use crate::util::{GetRange, deserialize_rfc1123};
3030
use crate::{
3131
Attribute, Attributes, ClientOptions, GetOptions, ListResult, ObjectMeta, Path, PutMode,
3232
PutMultipartOptions, PutOptions, PutPayload, PutResult, Result, RetryConfig, TagSet,
3333
};
3434
use async_trait::async_trait;
35-
use base64::prelude::{BASE64_STANDARD, BASE64_STANDARD_NO_PAD};
3635
use base64::Engine;
36+
use base64::prelude::{BASE64_STANDARD, BASE64_STANDARD_NO_PAD};
3737
use bytes::{Buf, Bytes};
3838
use chrono::{DateTime, Utc};
3939
use http::{
40-
header::{HeaderMap, HeaderValue, CONTENT_LENGTH, CONTENT_TYPE, IF_MATCH, IF_NONE_MATCH},
4140
HeaderName, Method,
41+
header::{CONTENT_LENGTH, CONTENT_TYPE, HeaderMap, HeaderValue, IF_MATCH, IF_NONE_MATCH},
4242
};
4343
use rand::Rng as _;
4444
use serde::{Deserialize, Serialize};
@@ -497,7 +497,7 @@ async fn parse_blob_batch_delete_body(
497497
code: code.to_string(),
498498
reason: part_response.reason.unwrap_or_default().to_string(),
499499
}
500-
.into())
500+
.into());
501501
}
502502
_ => return Err(invalid_response("missing part response status code").into()),
503503
}

src/azure/credential.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,23 +16,23 @@
1616
// under the License.
1717

1818
use super::client::UserDelegationKey;
19+
use crate::RetryConfig;
1920
use crate::azure::STORE;
20-
use crate::client::builder::{add_query_pairs, HttpRequestBuilder};
21+
use crate::client::builder::{HttpRequestBuilder, add_query_pairs};
2122
use crate::client::retry::RetryExt;
2223
use crate::client::token::{TemporaryToken, TokenCache};
2324
use crate::client::{CredentialProvider, HttpClient, HttpError, HttpRequest, TokenProvider};
2425
use crate::util::hmac_sha256;
25-
use crate::RetryConfig;
2626
use async_trait::async_trait;
27-
use base64::prelude::{BASE64_STANDARD, BASE64_URL_SAFE_NO_PAD};
2827
use base64::Engine;
28+
use base64::prelude::{BASE64_STANDARD, BASE64_URL_SAFE_NO_PAD};
2929
use chrono::{DateTime, SecondsFormat, Utc};
30+
use http::Method;
3031
use http::header::{
31-
HeaderMap, HeaderName, HeaderValue, ACCEPT, AUTHORIZATION, CONTENT_ENCODING, CONTENT_LANGUAGE,
32-
CONTENT_LENGTH, CONTENT_TYPE, DATE, IF_MATCH, IF_MODIFIED_SINCE, IF_NONE_MATCH,
32+
ACCEPT, AUTHORIZATION, CONTENT_ENCODING, CONTENT_LANGUAGE, CONTENT_LENGTH, CONTENT_TYPE, DATE,
33+
HeaderMap, HeaderName, HeaderValue, IF_MATCH, IF_MODIFIED_SINCE, IF_NONE_MATCH,
3334
IF_UNMODIFIED_SINCE, RANGE,
3435
};
35-
use http::Method;
3636
use serde::Deserialize;
3737
use std::borrow::Cow;
3838
use std::collections::HashMap;
@@ -1079,7 +1079,7 @@ mod tests {
10791079
async fn test_managed_identity() {
10801080
let server = MockServer::new().await;
10811081

1082-
std::env::set_var(MSI_SECRET_ENV_KEY, "env-secret");
1082+
unsafe { std::env::set_var(MSI_SECRET_ENV_KEY, "env-secret") };
10831083

10841084
let endpoint = server.url();
10851085
let client = HttpClient::new(Client::new());

src/azure/mod.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,11 @@
2323
//!
2424
//! Unused blocks will automatically be dropped after 7 days.
2525
use crate::{
26+
GetOptions, GetResult, ListResult, MultipartId, MultipartUpload, ObjectMeta, ObjectStore,
27+
PutMultipartOptions, PutOptions, PutPayload, PutResult, Result, UploadPart,
2628
multipart::{MultipartStore, PartId},
2729
path::Path,
2830
signer::Signer,
29-
GetOptions, GetResult, ListResult, MultipartId, MultipartUpload, ObjectMeta, ObjectStore,
30-
PutMultipartOptions, PutOptions, PutPayload, PutResult, Result, UploadPart,
3131
};
3232
use async_trait::async_trait;
3333
use futures::stream::{BoxStream, StreamExt, TryStreamExt};
@@ -37,10 +37,10 @@ use std::sync::Arc;
3737
use std::time::Duration;
3838
use url::Url;
3939

40+
use crate::client::CredentialProvider;
4041
use crate::client::get::GetClientExt;
4142
use crate::client::list::{ListClient, ListClientExt};
42-
use crate::client::CredentialProvider;
43-
pub use credential::{authority_hosts, AzureAccessKey, AzureAuthorizer};
43+
pub use credential::{AzureAccessKey, AzureAuthorizer, authority_hosts};
4444

4545
mod builder;
4646
mod client;

0 commit comments

Comments
 (0)