diff --git a/cargo-registry-markdown/lib.rs b/cargo-registry-markdown/lib.rs index 8009b279c09..688baacc2f6 100644 --- a/cargo-registry-markdown/lib.rs +++ b/cargo-registry-markdown/lib.rs @@ -390,8 +390,7 @@ mod tests { assert_eq!( result, format!( - "

hi

\n", - host + "

hi

\n" ) ); @@ -399,8 +398,7 @@ mod tests { assert_eq!( result, format!( - "

there

\n", - host + "

there

\n" ) ); @@ -408,8 +406,7 @@ mod tests { assert_eq!( result, format!( - "

\"alt\"

\n", - host + "

\"alt\"

\n", ) ); @@ -417,8 +414,7 @@ mod tests { assert_eq!( result, format!( - "\"alt\"\n", - host + "\"alt\"\n", ) ); @@ -426,8 +422,7 @@ mod tests { assert_eq!( result, format!( - "

\"alt\"

\n", - host + "

\"alt\"

\n", ) ); @@ -435,8 +430,7 @@ mod tests { assert_eq!( result, format!( - "

\"alt\"

\n", - host + "

\"alt\"

\n", ) ); @@ -444,8 +438,7 @@ mod tests { assert_eq!( result, format!( - "

\"alt\"

\n", - host + "

\"alt\"

\n", ) ); } diff --git a/cargo-registry-s3/lib.rs b/cargo-registry-s3/lib.rs index ed48d815bbf..aefae0d0c9b 100644 --- a/cargo-registry-s3/lib.rs +++ b/cargo-registry-s3/lib.rs @@ -85,7 +85,7 @@ impl Bucket { "{}.s3{}.amazonaws.com", self.name, match self.region { - Some(ref r) if !r.is_empty() => format!("-{}", r), + Some(ref r) if !r.is_empty() => format!("-{r}"), Some(_) => String::new(), None => String::new(), } @@ -95,13 +95,9 @@ impl Bucket { fn auth(&self, verb: &str, date: &str, path: &str, md5: &str, content_type: &str) -> String { let string = format!( "{verb}\n{md5}\n{ty}\n{date}\n{headers}/{name}/{path}", - verb = verb, - md5 = md5, ty = content_type, - date = date, headers = "", name = self.name, - path = path ); let signature = { let key = self.secret_key.as_bytes(); diff --git a/src/admin/delete_crate.rs b/src/admin/delete_crate.rs index e286a293ec7..f710d4b6c81 100644 --- a/src/admin/delete_crate.rs +++ b/src/admin/delete_crate.rs @@ -37,7 +37,7 @@ fn delete(opts: Opts, conn: &PgConnection) { let n = diesel::delete(crates::table.find(krate.id)) .execute(conn) .unwrap(); - println!(" {} deleted", n); + println!(" {n} deleted"); if !dialoguer::confirm("commit?") { panic!("aborting transaction"); diff --git a/src/admin/on_call.rs b/src/admin/on_call.rs index 3a0a1ecc437..28f953ac29e 100644 --- a/src/admin/on_call.rs +++ b/src/admin/on_call.rs @@ -31,7 +31,7 @@ impl Event { let response = Client::new() .post("https://events.pagerduty.com/generic/2010-04-15/create_event.json") .header(header::ACCEPT, "application/vnd.pagerduty+json;version=2") - .header(header::AUTHORIZATION, format!("Token token={}", api_token)) + .header(header::AUTHORIZATION, format!("Token token={api_token}")) .json(&FullEvent { service_key, event: self, diff --git a/src/admin/render_readmes.rs b/src/admin/render_readmes.rs index 990cf348b81..9fabe742888 100644 --- a/src/admin/render_readmes.rs +++ b/src/admin/render_readmes.rs @@ -52,8 +52,8 @@ pub fn run(opts: Opts) -> anyhow::Result<()> { }; let older_than = older_than.naive_utc(); - println!("Start time: {}", start_time); - println!("Rendering readmes older than: {}", older_than); + println!("Start time: {start_time}"); + println!("Rendering readmes older than: {older_than}"); let mut query = versions::table .inner_join(crates::table) @@ -67,14 +67,14 @@ pub fn run(opts: Opts) -> anyhow::Result<()> { .into_boxed(); if let Some(crate_name) = opts.crate_name { - println!("Rendering readmes for {}", crate_name); + println!("Rendering readmes for {crate_name}"); query = query.filter(crates::name.eq(crate_name)); } let version_ids: Vec = query.load(&conn).expect("error loading version ids"); let total_versions = version_ids.len(); - println!("Rendering {} versions", total_versions); + println!("Rendering {total_versions} versions"); let page_size = opts.page_size; @@ -138,8 +138,8 @@ pub fn run(opts: Opts) -> anyhow::Result<()> { } for handle in tasks { match handle.join() { - Err(err) => println!("Thread panicked: {:?}", err), - Ok(Err(err)) => println!("Thread failed: {:?}", err), + Err(err) => println!("Thread panicked: {err:?}"), + Ok(Err(err)) => println!("Thread failed: {err:?}"), _ => {} } } @@ -161,7 +161,7 @@ fn get_readme( let location = match uploader { Uploader::S3 { .. } => location, - Uploader::Local => format!("http://localhost:8888/{}", location), + Uploader::Local => format!("http://localhost:8888/{location}"), }; let mut extra_headers = header::HeaderMap::new(); @@ -188,7 +188,7 @@ fn render_pkg_readme(mut archive: Archive, pkg_name: &str) -> anyhow let mut entries = archive.entries().context("Invalid tar archive entries")?; let manifest: Manifest = { - let path = format!("{}/Cargo.toml", pkg_name); + let path = format!("{pkg_name}/Cargo.toml"); let contents = find_file_by_path(&mut entries, Path::new(&path)) .context("Failed to read Cargo.toml file")?; @@ -201,9 +201,9 @@ fn render_pkg_readme(mut archive: Archive, pkg_name: &str) -> anyhow .readme .clone() .unwrap_or_else(|| "README.md".into()); - let path = format!("{}/{}", pkg_name, readme_path); + let path = format!("{pkg_name}/{readme_path}"); let contents = find_file_by_path(&mut entries, Path::new(&path)) - .with_context(|| format!("Failed to read {} file", readme_path))?; + .with_context(|| format!("Failed to read {readme_path} file"))?; // pkg_path_in_vcs Unsupported from admin::render_readmes. See #4095 // Would need access to cargo_vcs_info diff --git a/src/bin/enqueue-job.rs b/src/bin/enqueue-job.rs index 95197cc07b3..3c9c80ff765 100644 --- a/src/bin/enqueue-job.rs +++ b/src/bin/enqueue-job.rs @@ -11,7 +11,7 @@ fn main() -> Result<()> { let mut args = std::env::args().skip(1); let job = args.next().unwrap_or_default(); - println!("Enqueueing background job: {}", job); + println!("Enqueueing background job: {job}"); match &*job { "update_downloads" => { diff --git a/src/bin/monitor.rs b/src/bin/monitor.rs index ce0e89f0681..7cfc2874f63 100644 --- a/src/bin/monitor.rs +++ b/src/bin/monitor.rs @@ -54,8 +54,7 @@ fn check_failing_background_jobs(conn: &PgConnection) -> Result<()> { on_call::Event::Trigger { incident_key: Some(EVENT_KEY.into()), description: format!( - "{} jobs have been in the queue for more than {} minutes", - stalled_job_count, max_job_time + "{stalled_job_count} jobs have been in the queue for more than {max_job_time} minutes" ), } } else { @@ -95,7 +94,7 @@ fn check_stalled_update_downloads(conn: &PgConnection) -> Result<()> { if minutes > max_job_time { return log_and_trigger_event(on_call::Event::Trigger { incident_key: Some(EVENT_KEY.into()), - description: format!("update_downloads job running for {} minutes", minutes), + description: format!("update_downloads job running for {minutes} minutes"), }); } }; @@ -130,13 +129,13 @@ fn check_spam_attack(conn: &PgConnection) -> Result<()> { .optional()?; if let Some(bad_crate) = bad_crate { - event_description = Some(format!("Crate named {} published", bad_crate)); + event_description = Some(format!("Crate named {bad_crate} published")); } let event = if let Some(event_description) = event_description { on_call::Event::Trigger { incident_key: Some(EVENT_KEY.into()), - description: format!("{}, possible spam attack underway", event_description,), + description: format!("{event_description}, possible spam attack underway"), } } else { on_call::Event::Resolve { @@ -153,11 +152,11 @@ fn log_and_trigger_event(event: on_call::Event) -> Result<()> { match event { on_call::Event::Trigger { ref description, .. - } => println!("Paging on-call: {}", description), + } => println!("Paging on-call: {description}"), on_call::Event::Resolve { description: Some(ref description), .. - } => println!("{}", description), + } => println!("{description}"), _ => {} // noop } event.send() diff --git a/src/bin/server.rs b/src/bin/server.rs index 04e3586af98..e321817c8cc 100644 --- a/src/bin/server.rs +++ b/src/bin/server.rs @@ -110,7 +110,7 @@ fn main() -> Result<(), Box> { // Do not change this line! Removing the line or changing its contents in any way will break // the test suite :) - println!("Listening at http://{}", addr); + println!("Listening at http://{addr}"); // Creating this file tells heroku to tell nginx that the application is ready // to receive traffic. @@ -120,7 +120,7 @@ fn main() -> Result<(), Box> { } else { "/tmp/app-initialized" }; - println!("Writing to {}", path); + println!("Writing to {path}"); File::create(path).unwrap(); // Launch nginx via the Heroku nginx buildpack @@ -137,7 +137,7 @@ fn main() -> Result<(), Box> { println!("Persisting remaining downloads counters"); match app.downloads_counter.persist_all_shards(&app) { Ok(stats) => stats.log(), - Err(err) => println!("downloads_counter error: {}", err), + Err(err) => println!("downloads_counter error: {err}"), } println!("Server has gracefully shutdown!"); @@ -154,7 +154,7 @@ fn downloads_counter_thread(app: Arc) { match app.downloads_counter.persist_next_shard(&app) { Ok(stats) => stats.log(), - Err(err) => println!("downloads_counter error: {}", err), + Err(err) => println!("downloads_counter error: {err}"), } }); } @@ -169,7 +169,7 @@ fn log_instance_metrics_thread(app: Arc) { std::thread::spawn(move || loop { if let Err(err) = log_instance_metrics_inner(&app) { - eprintln!("log_instance_metrics error: {}", err); + eprintln!("log_instance_metrics error: {err}"); } std::thread::sleep(interval); }); diff --git a/src/boot/categories.rs b/src/boot/categories.rs index de14d3250ac..632a585aeb6 100644 --- a/src/boot/categories.rs +++ b/src/boot/categories.rs @@ -38,7 +38,7 @@ impl Category { fn required_string_from_toml<'a>(toml: &'a toml::value::Table, key: &str) -> Result<&'a str> { toml.get(key) .and_then(toml::Value::as_str) - .with_context(|| format!("Expected category TOML attribute '{}' to be a String", key)) + .with_context(|| format!("Expected category TOML attribute '{key}' to be a String")) } fn optional_string_from_toml<'a>(toml: &'a toml::value::Table, key: &str) -> &'a str { @@ -54,7 +54,7 @@ fn categories_from_toml( for (slug, details) in categories { let details = details .as_table() - .with_context(|| format!("category {} was not a TOML table", slug))?; + .with_context(|| format!("category {slug} was not a TOML table"))?; let category = Category::from_parent( slug, @@ -66,7 +66,7 @@ fn categories_from_toml( if let Some(categories) = details.get("categories") { let categories = categories .as_table() - .with_context(|| format!("child categories of {} were not a table", slug))?; + .with_context(|| format!("child categories of {slug} were not a table"))?; result.extend(categories_from_toml(categories, Some(&category))?); } diff --git a/src/controllers.rs b/src/controllers.rs index 4dae7b59055..169ff5e0175 100644 --- a/src/controllers.rs +++ b/src/controllers.rs @@ -72,7 +72,7 @@ mod prelude { let query_string = url::form_urlencoded::Serializer::new(String::new()) .extend_pairs(params) .finish(); - format!("?{}", query_string) + format!("?{query_string}") } fn log_metadata(&mut self, key: &'static str, value: V) { diff --git a/src/controllers/krate/search.rs b/src/controllers/krate/search.rs index d34520399bb..3951776e1a0 100644 --- a/src/controllers/krate/search.rs +++ b/src/controllers/krate/search.rs @@ -104,7 +104,7 @@ pub fn search(req: &mut dyn RequestExt) -> EndpointResult { .filter( categories::slug .eq(cat) - .or(categories::slug.like(format!("{}::%", cat))), + .or(categories::slug.like(format!("{cat}::%"))), ), ), ); diff --git a/src/controllers/token.rs b/src/controllers/token.rs index 536edc5b27c..7ed38c09ce0 100644 --- a/src/controllers/token.rs +++ b/src/controllers/token.rs @@ -42,7 +42,7 @@ pub fn new(req: &mut dyn RequestExt) -> EndpointResult { .ok_or_else(|| bad_request("missing header: Content-Length"))?; if length > max_size { - return Err(bad_request(&format!("max content length is: {}", max_size))); + return Err(bad_request(&format!("max content length is: {max_size}"))); } let mut json = vec![0; length as usize]; @@ -52,7 +52,7 @@ pub fn new(req: &mut dyn RequestExt) -> EndpointResult { String::from_utf8(json).map_err(|_| bad_request(&"json body was not valid utf-8"))?; let new: NewApiTokenRequest = json::from_str(&json) - .map_err(|e| bad_request(&format!("invalid new token request: {:?}", e)))?; + .map_err(|e| bad_request(&format!("invalid new token request: {e:?}")))?; let name = &new.api_token.name; if name.is_empty() { @@ -88,7 +88,7 @@ pub fn new(req: &mut dyn RequestExt) -> EndpointResult { pub fn revoke(req: &mut dyn RequestExt) -> EndpointResult { let id = req.params()["id"] .parse::() - .map_err(|e| bad_request(&format!("invalid token id: {:?}", e)))?; + .map_err(|e| bad_request(&format!("invalid token id: {e:?}")))?; let authenticated_user = req.authenticate()?; let conn = req.db_conn()?; diff --git a/src/controllers/util.rs b/src/controllers/util.rs index 693733bb5db..aa824d8148f 100644 --- a/src/controllers/util.rs +++ b/src/controllers/util.rs @@ -57,10 +57,8 @@ fn verify_origin(req: &dyn RequestExt) -> AppResult<()> { .find(|value| !allowed_origins.iter().any(|it| it == value)); if let Some(bad_origin) = bad_origin { - let error_message = format!( - "only same-origin requests can be authenticated. got {:?}", - bad_origin - ); + let error_message = + format!("only same-origin requests can be authenticated. got {bad_origin:?}"); return Err(internal(&error_message).chain(forbidden())); } Ok(()) diff --git a/src/email.rs b/src/email.rs index 63b19497fe6..7d9b913d669 100644 --- a/src/email.rs +++ b/src/email.rs @@ -74,12 +74,9 @@ https://{}/confirm/{}", ) -> AppResult<()> { let subject = "Crate ownership invitation"; let body = format!( - "{} has invited you to become an owner of the crate {}!\n -Visit https://{domain}/accept-invite/{} to accept this invitation, + "{user_name} has invited you to become an owner of the crate {crate_name}!\n +Visit https://{domain}/accept-invite/{token} to accept this invitation, or go to https://{domain}/me/pending-invites to manage all of your crate ownership invitations.", - user_name, - crate_name, - token, domain = crate::config::domain_name() ); diff --git a/src/git.rs b/src/git.rs index c613d66b2f2..4e9eeaa7622 100644 --- a/src/git.rs +++ b/src/git.rs @@ -241,7 +241,7 @@ impl Repository { repo.remote_with_fetch( name, url, - &format!("+refs/heads/master:refs/remotes/{}/master", name), + &format!("+refs/heads/master:refs/remotes/{name}/master"), ) }) .clone( @@ -368,13 +368,13 @@ impl Repository { /// This function also prints the commit message and a success or failure /// message to the console. pub fn commit_and_push(&self, message: &str, modified_file: &Path) -> anyhow::Result<()> { - println!("Committing and pushing \"{}\"", message); + println!("Committing and pushing \"{message}\""); let relative_path = modified_file.strip_prefix(self.checkout_path.path())?; self.perform_commit_and_push(message, relative_path) - .map(|_| println!("Commit and push finished for \"{}\"", message)) + .map(|_| println!("Commit and push finished for \"{message}\"")) .map_err(|err| { - eprintln!("Commit and push for \"{}\" errored: {}", message, err); + eprintln!("Commit and push for \"{message}\" errored: {err}"); err }) } @@ -396,7 +396,7 @@ impl Repository { let head = self.head_oid()?; if head != original_head { - println!("Resetting index from {} to {}", original_head, head); + println!("Resetting index from {original_head} to {head}"); } let obj = self.repository.find_object(head, None)?; diff --git a/src/github.rs b/src/github.rs index 6a94ce5d95f..06b2db2310d 100644 --- a/src/github.rs +++ b/src/github.rs @@ -26,7 +26,7 @@ impl GitHubClient { } pub fn org_by_name(&self, org_name: &str, auth: &AccessToken) -> AppResult { - let url = format!("/orgs/{}", org_name); + let url = format!("/orgs/{org_name}"); self.request(&url, auth) } @@ -36,7 +36,7 @@ impl GitHubClient { team_name: &str, auth: &AccessToken, ) -> AppResult { - let url = format!("/orgs/{}/teams/{}", org_name, team_name); + let url = format!("/orgs/{org_name}/teams/{team_name}"); self.request(&url, auth) } @@ -47,10 +47,7 @@ impl GitHubClient { username: &str, auth: &AccessToken, ) -> AppResult { - let url = format!( - "/organizations/{}/team/{}/memberships/{}", - org_id, team_id, username - ); + let url = format!("/organizations/{org_id}/team/{team_id}/memberships/{username}"); self.request(&url, auth) } @@ -62,7 +59,7 @@ impl GitHubClient { T: DeserializeOwned, { let url = format!("{}{}", self.base_url, url); - info!("GITHUB HTTP: {}", url); + info!("GITHUB HTTP: {url}"); self.client() .get(&url) diff --git a/src/middleware.rs b/src/middleware.rs index df952a3f45f..87155e0fa2e 100644 --- a/src/middleware.rs +++ b/src/middleware.rs @@ -90,10 +90,7 @@ pub fn build_middleware(app: Arc, endpoints: RouteBuilder) -> MiddlewareBui if let Ok(capacity) = env::var("DB_PRIMARY_POOL_SIZE") { if let Ok(capacity) = capacity.parse() { if capacity >= 10 { - println!( - "Enabling BalanceCapacity middleware with {} pool capacity", - capacity - ); + println!("Enabling BalanceCapacity middleware with {capacity} pool capacity"); m.around(balance_capacity::BalanceCapacity::new(capacity)) } else { println!( diff --git a/src/middleware/debug.rs b/src/middleware/debug.rs index d6eae135cf8..e8e179dc922 100644 --- a/src/middleware/debug.rs +++ b/src/middleware/debug.rs @@ -14,7 +14,7 @@ impl Middleware for Debug { res.map(|res| { debug!(" <- {:?}", res.status()); for (k, v) in res.headers().iter() { - debug!(" <- {} {:?}", k, v); + debug!(" <- {k} {v:?}"); } res }) diff --git a/src/models/action.rs b/src/models/action.rs index 266e91c681e..d8b945f80da 100644 --- a/src/models/action.rs +++ b/src/models/action.rs @@ -44,7 +44,7 @@ impl FromSql for VersionAction { 0 => Ok(VersionAction::Publish), 1 => Ok(VersionAction::Yank), 2 => Ok(VersionAction::Unyank), - n => Err(format!("unknown version action: {}", n).into()), + n => Err(format!("unknown version action: {n}").into()), } } } diff --git a/src/models/dependency.rs b/src/models/dependency.rs index 0548f4386db..37688a5d05f 100644 --- a/src/models/dependency.rs +++ b/src/models/dependency.rs @@ -48,7 +48,7 @@ impl FromSql for DependencyKind { 0 => Ok(DependencyKind::Normal), 1 => Ok(DependencyKind::Build), 2 => Ok(DependencyKind::Dev), - n => Err(format!("unknown kind: {}", n).into()), + n => Err(format!("unknown kind: {n}").into()), } } } diff --git a/src/models/krate.rs b/src/models/krate.rs index 7dd789fe363..bb707cf4543 100644 --- a/src/models/krate.rs +++ b/src/models/krate.rs @@ -210,7 +210,7 @@ impl Crate { crates::name: SelectableExpression, { if name.len() > 2 { - let wildcard_name = format!("%{}%", name); + let wildcard_name = format!("%{name}%"); Box::new(canon_crate_name(crates::name).like(canon_crate_name(wildcard_name))) } else { diesel_infix_operator!(MatchesWord, "%>"); diff --git a/src/models/version.rs b/src/models/version.rs index b777087a50b..2e46c846050 100644 --- a/src/models/version.rs +++ b/src/models/version.rs @@ -286,7 +286,7 @@ mod tests { assert_ok!(validate_license_expr("GPL-3.0+")); let error = assert_err!(validate_license_expr("apache 2.0")); - let error = format!("{}", error); + let error = format!("{error}"); assert!(error.starts_with("unknown or invalid license expression; see http")); } } diff --git a/src/tests/account_lock.rs b/src/tests/account_lock.rs index e94e3e28bf2..c877b525d1e 100644 --- a/src/tests/account_lock.rs +++ b/src/tests/account_lock.rs @@ -29,10 +29,7 @@ fn account_locked_indefinitely() { let response = user.get::<()>(URL); assert_eq!(response.status(), StatusCode::FORBIDDEN); - let error_message = format!( - "This account is indefinitely locked. Reason: {}", - LOCK_REASON - ); + let error_message = format!("This account is indefinitely locked. Reason: {LOCK_REASON}"); assert_eq!( response.into_json(), json!({ "errors": [{ "detail": error_message }] }) @@ -50,10 +47,7 @@ fn account_locked_with_future_expiry() { let response = user.get::<()>(URL); assert_eq!(response.status(), StatusCode::FORBIDDEN); - let error_message = format!( - "This account is locked until {}. Reason: {}", - until, LOCK_REASON, - ); + let error_message = format!("This account is locked until {until}. Reason: {LOCK_REASON}"); assert_eq!( response.into_json(), json!({ "errors": [{ "detail": error_message }] }) diff --git a/src/tests/keyword.rs b/src/tests/keyword.rs index 8f1c9511015..43e33e57e52 100644 --- a/src/tests/keyword.rs +++ b/src/tests/keyword.rs @@ -65,7 +65,7 @@ fn update_crate() { let user = user.as_model(); let cnt = |kw: &str| { - let json: GoodKeyword = anon.get(&format!("/api/v1/keywords/{}", kw)).good(); + let json: GoodKeyword = anon.get(&format!("/api/v1/keywords/{kw}")).good(); json.keyword.crates_cnt as usize }; diff --git a/src/tests/krate/downloads.rs b/src/tests/krate/downloads.rs index bbc97137dba..fcdb208859f 100644 --- a/src/tests/krate/downloads.rs +++ b/src/tests/krate/downloads.rs @@ -24,7 +24,7 @@ fn assert_dl_count( query: Option<&str>, count: i32, ) { - let url = format!("/api/v1/crates/{}/downloads", name_and_version); + let url = format!("/api/v1/crates/{name_and_version}/downloads"); let downloads: Downloads = if let Some(query) = query { anon.get_with_query(&url, query).good() } else { @@ -50,7 +50,7 @@ fn download() { }); let download = |name_and_version: &str| { - let url = format!("/api/v1/crates/{}/download", name_and_version); + let url = format!("/api/v1/crates/{name_and_version}/download"); let response = anon.get::<()>(&url); assert_eq!(response.status(), StatusCode::FOUND); // TODO: test the with_json code path @@ -71,13 +71,13 @@ fn download() { assert_dl_count(&anon, "FOO_DOWNLOAD", None, 2); let yesterday = (Utc::today() + Duration::days(-1)).format("%F"); - let query = format!("before_date={}", yesterday); + let query = format!("before_date={yesterday}"); assert_dl_count(&anon, "FOO_DOWNLOAD/1.0.0", Some(&query), 0); // crate/downloads always returns the last 90 days and ignores date params assert_dl_count(&anon, "FOO_DOWNLOAD", Some(&query), 2); let tomorrow = (Utc::today() + Duration::days(1)).format("%F"); - let query = format!("before_date={}", tomorrow); + let query = format!("before_date={tomorrow}"); assert_dl_count(&anon, "FOO_DOWNLOAD/1.0.0", Some(&query), 2); assert_dl_count(&anon, "FOO_DOWNLOAD", Some(&query), 2); } diff --git a/src/tests/krate/following.rs b/src/tests/krate/following.rs index e110409c93c..6e856bd468a 100644 --- a/src/tests/krate/following.rs +++ b/src/tests/krate/following.rs @@ -71,7 +71,7 @@ fn disallow_api_token_auth_for_get_crate_following_status() { // Token auth on GET for get following status is disallowed token - .get(&format!("/api/v1/crates/{}/following", a_crate)) + .get(&format!("/api/v1/crates/{a_crate}/following")) .assert_forbidden(); } @@ -95,7 +95,7 @@ fn getting_followed_crates_allows_api_token_auth() { } // Token auth on GET for get following status is disallowed - user.get::(&format!("/api/v1/crates/{}/following", crate_name)) + user.get::(&format!("/api/v1/crates/{crate_name}/following")) .good() .following }; @@ -103,7 +103,7 @@ fn getting_followed_crates_allows_api_token_auth() { let follow = |crate_name: &str| { assert!( token - .put::(&format!("/api/v1/crates/{}/follow", crate_name), b"") + .put::(&format!("/api/v1/crates/{crate_name}/follow"), b"") .good() .ok ); diff --git a/src/tests/krate/reverse_dependencies.rs b/src/tests/krate/reverse_dependencies.rs index 9a28f2ef72a..60c4f942fc1 100644 --- a/src/tests/krate/reverse_dependencies.rs +++ b/src/tests/krate/reverse_dependencies.rs @@ -12,7 +12,7 @@ struct RevDeps { impl crate::util::MockAnonymousUser { fn reverse_dependencies(&self, krate_name: &str) -> RevDeps { - let url = format!("/api/v1/crates/{}/reverse_dependencies", krate_name); + let url = format!("/api/v1/crates/{krate_name}/reverse_dependencies"); self.get(&url).good() } } diff --git a/src/tests/krate/yanking.rs b/src/tests/krate/yanking.rs index 2d61bf8d0c2..5bdbba5adbe 100644 --- a/src/tests/krate/yanking.rs +++ b/src/tests/krate/yanking.rs @@ -6,7 +6,7 @@ use http::StatusCode; impl crate::util::MockTokenUser { /// Yank the specified version of the specified crate and run all pending background jobs fn yank(&self, krate_name: &str, version: &str) -> crate::util::Response { - let url = format!("/api/v1/crates/{}/{}/yank", krate_name, version); + let url = format!("/api/v1/crates/{krate_name}/{version}/yank"); let response = self.delete(&url); self.app().run_pending_background_jobs(); response @@ -14,7 +14,7 @@ impl crate::util::MockTokenUser { /// Unyank the specified version of the specified crate and run all pending background jobs fn unyank(&self, krate_name: &str, version: &str) -> crate::util::Response { - let url = format!("/api/v1/crates/{}/{}/unyank", krate_name, version); + let url = format!("/api/v1/crates/{krate_name}/{version}/unyank"); let response = self.put(&url, &[]); self.app().run_pending_background_jobs(); response @@ -24,7 +24,7 @@ impl crate::util::MockTokenUser { impl crate::util::MockCookieUser { /// Yank the specified version of the specified crate and run all pending background jobs fn yank(&self, krate_name: &str, version: &str) -> crate::util::Response { - let url = format!("/api/v1/crates/{}/{}/yank", krate_name, version); + let url = format!("/api/v1/crates/{krate_name}/{version}/yank"); let response = self.delete(&url); self.app().run_pending_background_jobs(); response @@ -32,7 +32,7 @@ impl crate::util::MockCookieUser { /// Unyank the specified version of the specified crate and run all pending background jobs fn unyank(&self, krate_name: &str, version: &str) -> crate::util::Response { - let url = format!("/api/v1/crates/{}/{}/unyank", krate_name, version); + let url = format!("/api/v1/crates/{krate_name}/{version}/unyank"); let response = self.put(&url, &[]); self.app().run_pending_background_jobs(); response diff --git a/src/tests/metrics.rs b/src/tests/metrics.rs index 66cbf3ff30e..bc941cfe3ef 100644 --- a/src/tests/metrics.rs +++ b/src/tests/metrics.rs @@ -77,9 +77,9 @@ fn metrics_endpoint_auth_disabled() { } fn request_metrics(anon: &MockAnonymousUser, kind: &str, token: Option<&str>) -> Response<()> { - let mut req = anon.get_request(&format!("/api/private/metrics/{}", kind)); + let mut req = anon.get_request(&format!("/api/private/metrics/{kind}")); if let Some(token) = token { - req.header("Authorization", &format!("Bearer {}", token)); + req.header("Authorization", &format!("Bearer {token}")); } anon.run(req) } diff --git a/src/tests/owners.rs b/src/tests/owners.rs index 8827535b967..a12412b54b5 100644 --- a/src/tests/owners.rs +++ b/src/tests/owners.rs @@ -59,7 +59,7 @@ impl MockCookieUser { } }); - let url = format!("/api/v1/me/crate_owner_invitations/{}", krate_id); + let url = format!("/api/v1/me/crate_owner_invitations/{krate_id}"); self.put(&url, body.to_string().as_bytes()) } @@ -97,7 +97,7 @@ impl MockCookieUser { crate_owner_invitation: InvitationResponse, } - let url = format!("/api/v1/me/crate_owner_invitations/{}", krate_id); + let url = format!("/api/v1/me/crate_owner_invitations/{krate_id}"); let crate_owner_invite: CrateOwnerInvitation = self.put(&url, body.to_string().as_bytes()).good(); assert!(!crate_owner_invite.crate_owner_invitation.accepted); @@ -125,7 +125,7 @@ impl MockAnonymousUser { &self, token: &str, ) -> Response { - let url = format!("/api/v1/me/crate_owner_invitations/accept/{}", token); + let url = format!("/api/v1/me/crate_owner_invitations/accept/{token}"); self.put(&url, &[]) } } diff --git a/src/tests/record.rs b/src/tests/record.rs index 09f427354c3..3b4115956d0 100644 --- a/src/tests/record.rs +++ b/src/tests/record.rs @@ -59,7 +59,7 @@ impl Drop for Bomb { Err(..) if !thread::panicking() => panic!("server subtask failed: {}", stderr), Err(e) => { if !stderr.is_empty() { - println!("server subtask failed ({:?}): {}", e, stderr) + println!("server subtask failed ({e:?}): {stderr}") } } Ok(_) if thread::panicking() => {} @@ -293,7 +293,7 @@ fn replay_http( ) -> impl Future, Error>> + Send { static IGNORED_HEADERS: &[&str] = &["authorization", "date", "cache-control"]; - debug!("<- {:?}", req); + debug!("<- {req:?}"); assert_eq!(req.uri().to_string(), exchange.request.uri); assert_eq!(req.method().to_string(), exchange.request.method); assert_ok!(writeln!( @@ -340,7 +340,7 @@ fn replay_http( let status = StatusCode::from_u16(exchange.response.status).unwrap(); let response = builder.status(status).body(body.into()).unwrap(); - debug!("-> {:?}", response); + debug!("-> {response:?}"); Ok(response) } } diff --git a/src/tests/server_binary.rs b/src/tests/server_binary.rs index 337ad8aaf39..77e6181e986 100644 --- a/src/tests/server_binary.rs +++ b/src/tests/server_binary.rs @@ -206,7 +206,7 @@ where } } - println!("[server {}] {}", kind, line); + println!("[server {kind}] {line}"); } }); } diff --git a/src/tests/team.rs b/src/tests/team.rs index 323fd874708..124153686bb 100644 --- a/src/tests/team.rs +++ b/src/tests/team.rs @@ -14,7 +14,7 @@ use diesel::*; impl crate::util::MockAnonymousUser { /// List the team owners of the specified crate. fn crate_owner_teams(&self, krate_name: &str) -> crate::util::Response { - let url = format!("/api/v1/crates/{}/owner_team", krate_name); + let url = format!("/api/v1/crates/{krate_name}/owner_team"); self.get(&url) } } diff --git a/src/tests/token.rs b/src/tests/token.rs index 14236fb9d6c..afa47ff49fb 100644 --- a/src/tests/token.rs +++ b/src/tests/token.rs @@ -151,7 +151,7 @@ fn create_token_exceeded_tokens_per_user() { let id = user.as_model().id; app.db(|conn| { for i in 0..1000 { - assert_ok!(ApiToken::insert(conn, id, &format!("token {}", i))); + assert_ok!(ApiToken::insert(conn, id, &format!("token {i}"))); } }); let response = user.put::<()>(URL, NEW_BAR); diff --git a/src/tests/user.rs b/src/tests/user.rs index 5621d272c90..e7bff3de267 100644 --- a/src/tests/user.rs +++ b/src/tests/user.rs @@ -57,7 +57,7 @@ trait MockEmailHelper: RequestHelper { "url": "https://arbitrary.com", "kind": null }}); - let url = format!("/api/v1/users/{}", user_id); + let url = format!("/api/v1/users/{user_id}"); self.put(&url, body.to_string().as_bytes()) } } @@ -74,7 +74,7 @@ impl crate::util::MockCookieUser { } fn confirm_email(&self, email_token: &str) -> OkBool { - let url = format!("/api/v1/confirm/{}", email_token); + let url = format!("/api/v1/confirm/{email_token}"); self.put(&url, &[]).good() } diff --git a/src/tests/util.rs b/src/tests/util.rs index 56bee473a09..e2f4d69f554 100644 --- a/src/tests/util.rs +++ b/src/tests/util.rs @@ -141,7 +141,7 @@ pub trait RequestHelper { /// Search for crates owned by the specified user. fn search_by_user_id(&self, id: i32) -> CrateList { - self.search(&format!("user_id={}", id)) + self.search(&format!("user_id={id}")) } /// Enqueue a crate for publishing @@ -158,24 +158,24 @@ pub trait RequestHelper { /// Request the JSON used for a crate's page fn show_crate(&self, krate_name: &str) -> CrateResponse { - let url = format!("/api/v1/crates/{}", krate_name); + let url = format!("/api/v1/crates/{krate_name}"); self.get(&url).good() } /// Request the JSON used to list a crate's owners fn show_crate_owners(&self, krate_name: &str) -> OwnersResponse { - let url = format!("/api/v1/crates/{}/owners", krate_name); + let url = format!("/api/v1/crates/{krate_name}/owners"); self.get(&url).good() } /// Request the JSON used for a crate version's page fn show_version(&self, krate_name: &str, version: &str) -> VersionResponse { - let url = format!("/api/v1/crates/{}/{}", krate_name, version); + let url = format!("/api/v1/crates/{krate_name}/{version}"); self.get(&url).good() } fn show_category(&self, category_name: &str) -> CategoryResponse { - let url = format!("/api/v1/categories/{}", category_name); + let url = format!("/api/v1/categories/{category_name}"); self.get(&url).good() } @@ -310,7 +310,7 @@ impl MockTokenUser { where F: Fn(&MockTokenUser, &str, &[u8]) -> Response, { - let url = format!("/api/v1/crates/{}/owners", krate_name); + let url = format!("/api/v1/crates/{krate_name}/owners"); let body = json!({ "owners": owners }).to_string(); method(self, &url, body.as_bytes()) } diff --git a/src/tests/util/chaosproxy.rs b/src/tests/util/chaosproxy.rs index 855f2169493..6c0b5ce08c2 100644 --- a/src/tests/util/chaosproxy.rs +++ b/src/tests/util/chaosproxy.rs @@ -45,7 +45,7 @@ impl ChaosProxy { let instance_clone = instance.clone(); instance.runtime.spawn(async move { if let Err(err) = instance_clone.server_loop().await { - eprintln!("ChaosProxy server error: {}", err); + eprintln!("ChaosProxy server error: {err}"); } }); @@ -100,14 +100,14 @@ impl ChaosProxy { let self_clone = self.clone(); self.runtime.spawn(async move { if let Err(err) = self_clone.proxy_data(client_read, backend_write).await { - eprintln!("ChaosProxy connection error: {}", err); + eprintln!("ChaosProxy connection error: {err}"); } }); let self_clone = self.clone(); tokio::spawn(async move { if let Err(err) = self_clone.proxy_data(backend_read, client_write).await { - eprintln!("ChaosProxy connection error: {}", err); + eprintln!("ChaosProxy connection error: {err}"); } }); } diff --git a/src/tests/util/fresh_schema.rs b/src/tests/util/fresh_schema.rs index 79df24e1e19..553ae1bac6b 100644 --- a/src/tests/util/fresh_schema.rs +++ b/src/tests/util/fresh_schema.rs @@ -19,8 +19,7 @@ impl FreshSchema { DROP SCHEMA IF EXISTS {schema_name} CASCADE; CREATE SCHEMA {schema_name}; SET search_path TO {schema_name}, public; - ", - schema_name = schema_name + " )) .expect("failed to initialize schema"); @@ -30,7 +29,7 @@ impl FreshSchema { let database_url = url::Url::parse_with_params( database_url, - &[("options", format!("--search_path={},public", schema_name))], + &[("options", format!("--search_path={schema_name},public"))], ) .unwrap() .to_string(); @@ -61,5 +60,5 @@ fn generate_schema_name() -> String { .map(|_| rng.sample(rand::distributions::Alphanumeric) as char) .take(16) .collect(); - format!("cratesio_test_{}", random_string) + format!("cratesio_test_{random_string}") } diff --git a/src/tests/version.rs b/src/tests/version.rs index 6f059f2e5e4..610c62182d1 100644 --- a/src/tests/version.rs +++ b/src/tests/version.rs @@ -30,7 +30,7 @@ fn index() { (ids[0], ids[1]) }); - let query = format!("ids[]={}&ids[]={}", v1, v2); + let query = format!("ids[]={v1}&ids[]={v2}"); let json: VersionList = anon.get_with_query(url, &query).good(); assert_eq!(json.versions.len(), 2); diff --git a/src/uploaders.rs b/src/uploaders.rs index 83b53c33c80..ff15df92cdd 100644 --- a/src/uploaders.rs +++ b/src/uploaders.rs @@ -44,7 +44,7 @@ impl Uploader { None => bucket.host(), }; let path = Uploader::crate_path(crate_name, version); - format!("https://{}/{}", host, path) + format!("https://{host}/{path}") } Uploader::Local => format!("/{}", Uploader::crate_path(crate_name, version)), } @@ -65,7 +65,7 @@ impl Uploader { None => bucket.host(), }; let path = Uploader::readme_path(crate_name, version); - format!("https://{}/{}", host, path) + format!("https://{host}/{path}") } Uploader::Local => format!("/{}", Uploader::readme_path(crate_name, version)), } @@ -74,12 +74,12 @@ impl Uploader { /// Returns the internal path of an uploaded crate's version archive. fn crate_path(name: &str, version: &str) -> String { // No slash in front so we can use join - format!("crates/{}/{}-{}.crate", name, name, version) + format!("crates/{name}/{name}-{version}.crate") } /// Returns the internal path of an uploaded crate's version readme. fn readme_path(name: &str, version: &str) -> String { - format!("readmes/{}/{}-{}.html", name, name, version) + format!("readmes/{name}/{name}-{version}.html") } /// Uploads a file using the configured uploader (either `S3`, `Local`). diff --git a/src/util/errors/json.rs b/src/util/errors/json.rs index 67ed85b1649..da958a6a3da 100644 --- a/src/util/errors/json.rs +++ b/src/util/errors/json.rs @@ -141,9 +141,8 @@ impl AppError for TooManyRequests { let detail = format!( "You have published too many crates in a \ - short period of time. Please try again after {} or email \ - help@crates.io to have your limit increased.", - retry_after + short period of time. Please try again after {retry_after} or email \ + help@crates.io to have your limit increased." ); let mut response = json_error(&detail, StatusCode::TOO_MANY_REQUESTS); response.headers_mut().insert( diff --git a/src/views.rs b/src/views.rs index 43b8aa06c02..af6ce34733a 100644 --- a/src/views.rs +++ b/src/views.rs @@ -259,7 +259,7 @@ impl EncodableCrate { } = krate; let versions_link = match versions { Some(..) => None, - None => Some(format!("/api/v1/crates/{}/versions", name)), + None => Some(format!("/api/v1/crates/{name}/versions")), }; let keyword_ids = keywords.map(|kws| kws.iter().map(|kw| kw.keyword.clone()).collect()); let category_ids = categories.map(|cats| cats.iter().map(|cat| cat.slug.clone()).collect()); @@ -300,12 +300,12 @@ impl EncodableCrate { description, repository, links: EncodableCrateLinks { - version_downloads: format!("/api/v1/crates/{}/downloads", name), + version_downloads: format!("/api/v1/crates/{name}/downloads"), versions: versions_link, - owners: Some(format!("/api/v1/crates/{}/owners", name)), - owner_team: Some(format!("/api/v1/crates/{}/owner_team", name)), - owner_user: Some(format!("/api/v1/crates/{}/owner_user", name)), - reverse_dependencies: format!("/api/v1/crates/{}/reverse_dependencies", name), + owners: Some(format!("/api/v1/crates/{name}/owners")), + owner_team: Some(format!("/api/v1/crates/{name}/owner_team")), + owner_user: Some(format!("/api/v1/crates/{name}/owner_user")), + reverse_dependencies: format!("/api/v1/crates/{name}/reverse_dependencies"), }, } } @@ -388,7 +388,7 @@ impl From for EncodableOwner { gh_avatar, .. }) => { - let url = format!("https://github.com/{}", gh_login); + let url = format!("https://github.com/{gh_login}"); Self { id, login: gh_login, @@ -520,7 +520,7 @@ impl EncodablePrivateUser { gh_avatar, .. } = user; - let url = format!("https://github.com/{}", gh_login); + let url = format!("https://github.com/{gh_login}"); EncodablePrivateUser { id, @@ -556,7 +556,7 @@ impl From for EncodablePublicUser { gh_avatar, .. } = user; - let url = format!("https://github.com/{}", gh_login); + let url = format!("https://github.com/{gh_login}"); EncodablePublicUser { id, avatar: gh_avatar, @@ -620,14 +620,14 @@ impl EncodableVersion { } = version; let links = EncodableVersionLinks { - dependencies: format!("/api/v1/crates/{}/{}/dependencies", crate_name, num), - version_downloads: format!("/api/v1/crates/{}/{}/downloads", crate_name, num), - authors: format!("/api/v1/crates/{}/{}/authors", crate_name, num), + dependencies: format!("/api/v1/crates/{crate_name}/{num}/dependencies"), + version_downloads: format!("/api/v1/crates/{crate_name}/{num}/downloads"), + authors: format!("/api/v1/crates/{crate_name}/{num}/authors"), }; Self { - dl_path: format!("/api/v1/crates/{}/{}/download", crate_name, num), - readme_path: format!("/api/v1/crates/{}/{}/readme", crate_name, num), + dl_path: format!("/api/v1/crates/{crate_name}/{num}/download"), + readme_path: format!("/api/v1/crates/{crate_name}/{num}/readme"), num, id, krate: crate_name.to_string(), diff --git a/src/views/krate_publish.rs b/src/views/krate_publish.rs index 62ed24e0282..5ff78f2731d 100644 --- a/src/views/krate_publish.rs +++ b/src/views/krate_publish.rs @@ -76,8 +76,7 @@ impl<'de> Deserialize<'de> for EncodableCrateName { let value = de::Unexpected::Str(&s); let expected = format!( "a valid crate name to start with a letter, contain only letters, \ - numbers, hyphens, or underscores and have at most {} characters", - MAX_NAME_LENGTH + numbers, hyphens, or underscores and have at most {MAX_NAME_LENGTH} characters" ); Err(de::Error::invalid_value(value, &expected.as_ref())) } else { @@ -102,8 +101,7 @@ impl<'de> Deserialize<'de> for EncodableDependencyName { let value = de::Unexpected::Str(&s); let expected = format!( "a valid dependency name to start with a letter or underscore, contain only letters, \ - numbers, hyphens, or underscores and have at most {} characters", - MAX_NAME_LENGTH + numbers, hyphens, or underscores and have at most {MAX_NAME_LENGTH} characters" ); Err(de::Error::invalid_value(value, &expected.as_ref())) } else { diff --git a/src/worker/dump_db.rs b/src/worker/dump_db.rs index 00bf3614b98..4f49e654259 100644 --- a/src/worker/dump_db.rs +++ b/src/worker/dump_db.rs @@ -138,7 +138,7 @@ pub fn run_psql(script: &Path, database_url: &str) -> Result<(), PerformError> { let output = psql.wait_with_output()?; let stderr = String::from_utf8_lossy(&output.stderr); if stderr.contains("ERROR") { - return Err(format!("Error while executing psql: {}", stderr).into()); + return Err(format!("Error while executing psql: {stderr}").into()); } if !output.status.success() { return Err("psql did not finish successfully.".into()); diff --git a/src/worker/dump_db/gen_scripts.rs b/src/worker/dump_db/gen_scripts.rs index 3c601fea5f8..db0bfaf27b8 100644 --- a/src/worker/dump_db/gen_scripts.rs +++ b/src/worker/dump_db/gen_scripts.rs @@ -31,7 +31,7 @@ impl TableConfig { .columns .iter() .filter(|&(_, &vis)| vis == ColumnVisibility::Public) - .map(|(col, _)| format!("\"{}\"", col)) + .map(|(col, _)| format!("\"{col}\"")) .collect::>() .join(", "); if columns.is_empty() { @@ -141,8 +141,7 @@ mod tests { } in db_columns.difference(&vis_columns) { errors.push(format!( - "No visibility information for columns {}.{}.", - table_name, column_name + "No visibility information for columns {table_name}.{column_name}." )); } for Column { @@ -151,8 +150,7 @@ mod tests { } in vis_columns.difference(&db_columns) { errors.push(format!( - "Column {}.{} does not exist in the database.", - table_name, column_name + "Column {table_name}.{column_name} does not exist in the database." )); } assert!( diff --git a/src/worker/git.rs b/src/worker/git.rs index f717a24a1ef..e8e79bd5217 100644 --- a/src/worker/git.rs +++ b/src/worker/git.rs @@ -59,7 +59,7 @@ pub fn sync_yanked( .lines() .map(|line| { let mut git_crate = serde_json::from_str::(line) - .map_err(|_| format!("couldn't decode: `{}`", line))?; + .map_err(|_| format!("couldn't decode: `{line}`"))?; if git_crate.name != krate || git_crate.vers != version_num { return Ok(line.to_string()); } @@ -73,7 +73,7 @@ pub fn sync_yanked( fs::write(&dst, new.as_bytes())?; let action = if yanked { "Yanking" } else { "Unyanking" }; - let message = format!("{} crate `{}#{}`", action, krate, version_num); + let message = format!("{action} crate `{krate}#{version_num}`"); repo.commit_and_push(&message, &dst)?; } else { @@ -107,11 +107,11 @@ pub fn squash_index(env: &Environment) -> Result<(), PerformError> { "--atomic", "origin", // Overwrite master, but only if it server matches the expected value - &format!("--force-with-lease=refs/heads/master:{}", original_head), + &format!("--force-with-lease=refs/heads/master:{original_head}"), // The new squashed commit is pushed to master "HEAD:refs/heads/master", // The previous value of HEAD is pushed to a snapshot branch - &format!("{}:refs/heads/snapshot-{}", original_head, now), + &format!("{original_head}:refs/heads/snapshot-{now}"), ]))?; println!("The index has been successfully squashed.");