Skip to content

Commit 3079dbf

Browse files
committed
Use workspace lints. Resolve new nightly warnings.
1 parent bb48a4d commit 3079dbf

File tree

20 files changed

+90
-66
lines changed

20 files changed

+90
-66
lines changed

Cargo.toml

+15
Original file line numberDiff line numberDiff line change
@@ -12,3 +12,18 @@ members = [
1212
"contrib/ws/",
1313
"docs/tests",
1414
]
15+
16+
[workspace.lints.rust]
17+
unexpected_cfgs = { level = "warn", check-cfg = ['cfg(nightly)'] }
18+
rust_2018_idioms = "warn"
19+
async_fn_in_trait = "allow"
20+
refining_impl_trait = "allow"
21+
# unreachable_pub = "warn"
22+
# single_use_lifetimes = "warn"
23+
# missing_docs = "warn"
24+
25+
[workspace.lints.clippy]
26+
type_complexity = "allow"
27+
module_inception = "allow"
28+
multiple_bound_locations = "allow"
29+
manual_range_contains = "allow"

contrib/db_pools/codegen/Cargo.toml

+3
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@ rust-version = "1.75"
1313
[lib]
1414
proc-macro = true
1515

16+
[lints]
17+
workspace = true
18+
1619
[dependencies]
1720
devise = "0.4"
1821
quote = "1"

contrib/db_pools/lib/Cargo.toml

+3
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@ rust-version = "1.75"
1313
[package.metadata.docs.rs]
1414
all-features = true
1515

16+
[lints]
17+
workspace = true
18+
1619
[features]
1720
# deadpool features
1821
deadpool_postgres = ["deadpool-postgres", "deadpool"]

contrib/dyn_templates/Cargo.toml

+2-3
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,8 @@ license = "MIT OR Apache-2.0"
1212
edition = "2021"
1313
rust-version = "1.75"
1414

15-
[lints.clippy]
16-
type_complexity = "allow"
17-
multiple_bound_locations = "allow"
15+
[lints]
16+
workspace = true
1817

1918
[features]
2019
tera = ["dep:tera"]

contrib/sync_db_pools/codegen/Cargo.toml

+3
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@ rust-version = "1.75"
1313
[lib]
1414
proc-macro = true
1515

16+
[lints]
17+
workspace = true
18+
1619
[dependencies]
1720
quote = "1.0"
1821
devise = "0.4"

contrib/sync_db_pools/lib/Cargo.toml

+3
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@ license = "MIT OR Apache-2.0"
1010
edition = "2021"
1111
rust-version = "1.75"
1212

13+
[lints]
14+
workspace = true
15+
1316
[features]
1417
diesel_sqlite_pool = ["diesel/sqlite", "diesel/r2d2"]
1518
diesel_postgres_pool = ["diesel/postgres", "diesel/r2d2"]

contrib/sync_db_pools/lib/tests/databases.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ mod databases_tests {
1111
struct PrimaryDb(diesel::PgConnection);
1212
}
1313

14-
#[cfg(all(feature = "databases", feature = "sqlite_pool"))]
1514
#[cfg(test)]
15+
#[cfg(all(feature = "sqlite_pool"))]
1616
mod rusqlite_integration_test {
1717
use rocket_sync_db_pools::{rusqlite, database};
1818

@@ -58,13 +58,13 @@ mod rusqlite_integration_test {
5858
}
5959

6060
#[cfg(test)]
61-
#[cfg(feature = "databases")]
6261
mod sentinel_and_runtime_test {
6362
use rocket::{Rocket, Build};
6463
use r2d2::{ManageConnection, Pool};
6564
use rocket_sync_db_pools::{database, Poolable, PoolResult};
6665
use tokio::runtime::Runtime;
6766

67+
#[allow(dead_code)]
6868
struct ContainsRuntime(Runtime);
6969
struct TestConnection;
7070

contrib/ws/Cargo.toml

+3
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@ license = "MIT OR Apache-2.0"
1212
edition = "2021"
1313
rust-version = "1.75"
1414

15+
[lints]
16+
workspace = true
17+
1518
[features]
1619
default = ["tungstenite"]
1720
tungstenite = ["tokio-tungstenite"]

core/codegen/Cargo.toml

+3-4
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,12 @@ license = "MIT OR Apache-2.0"
1212
edition = "2021"
1313
rust-version = "1.75"
1414

15+
[lints]
16+
workspace = true
17+
1518
[lib]
1619
proc-macro = true
1720

18-
[lints.clippy]
19-
manual_range_contains = "allow"
20-
large_enum_variant = "allow"
21-
2221
[dependencies]
2322
indexmap = "2"
2423
quote = "1.0"

core/codegen/src/syn_ext.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ impl TypeExt for syn::Type {
187187
fn is_concrete(&self, generics: &[&Ident]) -> bool {
188188
struct ConcreteVisitor<'i>(bool, &'i [&'i Ident]);
189189

190-
impl<'a, 'i> Visit<'a> for ConcreteVisitor<'i> {
190+
impl<'a> Visit<'a> for ConcreteVisitor<'_> {
191191
fn visit_type(&mut self, ty: &'a syn::Type) {
192192
use syn::Type::*;
193193

core/codegen/tests/catcher.rs

+7-7
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@ use rocket::local::blocking::Client;
1010
use rocket::http::Status;
1111

1212
#[catch(404)] fn not_found_0() -> &'static str { "404-0" }
13-
#[catch(404)] fn not_found_1(_: &Request) -> &'static str { "404-1" }
14-
#[catch(404)] fn not_found_2(_: Status, _: &Request) -> &'static str { "404-2" }
15-
#[catch(default)] fn all(_: Status, r: &Request) -> String { r.uri().to_string() }
13+
#[catch(404)] fn not_found_1(_: &Request<'_>) -> &'static str { "404-1" }
14+
#[catch(404)] fn not_found_2(_: Status, _: &Request<'_>) -> &'static str { "404-2" }
15+
#[catch(default)] fn all(_: Status, r: &Request<'_>) -> String { r.uri().to_string() }
1616

1717
#[test]
1818
fn test_simple_catchers() {
@@ -37,10 +37,10 @@ fn test_simple_catchers() {
3737
}
3838

3939
#[get("/<code>")] fn forward(code: u16) -> Status { Status::new(code) }
40-
#[catch(400)] fn forward_400(status: Status, _: &Request) -> String { status.code.to_string() }
41-
#[catch(404)] fn forward_404(status: Status, _: &Request) -> String { status.code.to_string() }
42-
#[catch(444)] fn forward_444(status: Status, _: &Request) -> String { status.code.to_string() }
43-
#[catch(500)] fn forward_500(status: Status, _: &Request) -> String { status.code.to_string() }
40+
#[catch(400)] fn forward_400(status: Status, _: &Request<'_>) -> String { status.code.to_string() }
41+
#[catch(404)] fn forward_404(status: Status, _: &Request<'_>) -> String { status.code.to_string() }
42+
#[catch(444)] fn forward_444(status: Status, _: &Request<'_>) -> String { status.code.to_string() }
43+
#[catch(500)] fn forward_500(status: Status, _: &Request<'_>) -> String { status.code.to_string() }
4444

4545
#[test]
4646
fn test_status_param() {

core/codegen/tests/from_form.rs

+26-26
Original file line numberDiff line numberDiff line change
@@ -243,23 +243,23 @@ fn field_renaming() {
243243
}
244244

245245
let form_string = &["single=123", "some_case=hi_im_here"].join("&");
246-
let form: Option<MultiName> = strict(&form_string).ok();
246+
let form: Option<MultiName<'_>> = strict(&form_string).ok();
247247
assert_eq!(form, Some(MultiName { single: 123, some_case: "hi_im_here", }));
248248

249249
let form_string = &["single=123", "SomeCase=HiImHere"].join("&");
250-
let form: Option<MultiName> = strict(&form_string).ok();
250+
let form: Option<MultiName<'_>> = strict(&form_string).ok();
251251
assert_eq!(form, Some(MultiName { single: 123, some_case: "HiImHere", }));
252252

253253
let form_string = &["single=123", "some_case=hi_im_here", "SomeCase=HiImHere"].join("&");
254-
let form: Option<MultiName> = strict(&form_string).ok();
254+
let form: Option<MultiName<'_>> = strict(&form_string).ok();
255255
assert!(form.is_none());
256256

257257
let form_string = &["single=123", "some_case=hi_im_here", "SomeCase=HiImHere"].join("&");
258-
let form: Option<MultiName> = lenient(&form_string).ok();
258+
let form: Option<MultiName<'_>> = lenient(&form_string).ok();
259259
assert_eq!(form, Some(MultiName { single: 123, some_case: "hi_im_here", }));
260260

261261
let form_string = &["single=123", "SomeCase=HiImHere", "some_case=hi_im_here"].join("&");
262-
let form: Option<MultiName> = lenient(&form_string).ok();
262+
let form: Option<MultiName<'_>> = lenient(&form_string).ok();
263263
assert_eq!(form, Some(MultiName { single: 123, some_case: "HiImHere", }));
264264

265265
#[derive(Debug, PartialEq, FromForm)]
@@ -273,19 +273,19 @@ fn field_renaming() {
273273
}
274274

275275
let form_string = &["HeLLO=123", "sOMECASe=hi_im_here"].join("&");
276-
let form: Option<CaseInsensitive> = strict(&form_string).ok();
276+
let form: Option<CaseInsensitive<'_>> = strict(&form_string).ok();
277277
assert_eq!(form, Some(CaseInsensitive { hello: 123, some_case: "hi_im_here", }));
278278

279279
let form_string = &["hello=456", "SomeCase=HiImHere"].join("&");
280-
let form: Option<CaseInsensitive> = strict(&form_string).ok();
280+
let form: Option<CaseInsensitive<'_>> = strict(&form_string).ok();
281281
assert_eq!(form, Some(CaseInsensitive { hello: 456, some_case: "HiImHere", }));
282282

283283
let form_string = &["helLO=789", "some_case=hi_there"].join("&");
284-
let form: Option<CaseInsensitive> = strict(&form_string).ok();
284+
let form: Option<CaseInsensitive<'_>> = strict(&form_string).ok();
285285
assert_eq!(form, Some(CaseInsensitive { hello: 789, some_case: "hi_there", }));
286286

287287
let form_string = &["hello=123", "SOme_case=hi_im_here"].join("&");
288-
let form: Option<CaseInsensitive> = strict(&form_string).ok();
288+
let form: Option<CaseInsensitive<'_>> = strict(&form_string).ok();
289289
assert!(form.is_none());
290290
}
291291

@@ -479,7 +479,7 @@ fn test_multi() {
479479
more_dogs: HashMap<&'r str, Dog>,
480480
}
481481

482-
let multi: Multi = strict("checks=true&checks=false&checks=false\
482+
let multi: Multi<'_> = strict("checks=true&checks=false&checks=false\
483483
&names=Sam&names[]=Smith&names[]=Bob\
484484
&news[]=Here&news[]=also here\
485485
&dogs[fido].barks=true&dogs[George].barks=false\
@@ -545,17 +545,17 @@ struct Person<'r> {
545545

546546
#[test]
547547
fn test_nested_multi() {
548-
let person: Person = lenient("sitting.barks=true&sitting.trained=true").unwrap();
548+
let person: Person<'_> = lenient("sitting.barks=true&sitting.trained=true").unwrap();
549549
assert_eq!(person, Person {
550550
sitting: Dog { barks: true, trained: true },
551551
cats: vec![],
552552
dogs: vec![],
553553
});
554554

555-
let person = strict::<Person>("sitting.barks=true&sitting.trained=true");
555+
let person = strict::<Person<'_>>("sitting.barks=true&sitting.trained=true");
556556
assert!(person.is_err());
557557

558-
let person: Person = lenient("sitting.barks=true&sitting.trained=true\
558+
let person: Person<'_> = lenient("sitting.barks=true&sitting.trained=true\
559559
&dogs[0].name=fido&dogs[0].pet.trained=yes&dogs[0].age=7&dogs[0].pet.barks=no\
560560
").unwrap();
561561
assert_eq!(person, Person {
@@ -568,11 +568,11 @@ fn test_nested_multi() {
568568
}]
569569
});
570570

571-
let person = strict::<Person>("sitting.barks=true&sitting.trained=true\
571+
let person = strict::<Person<'_>>("sitting.barks=true&sitting.trained=true\
572572
&dogs[0].name=fido&dogs[0].pet.trained=yes&dogs[0].age=7&dogs[0].pet.barks=no");
573573
assert!(person.is_err());
574574

575-
let person: Person = lenient("sitting.trained=no&sitting.barks=true\
575+
let person: Person<'_> = lenient("sitting.trained=no&sitting.barks=true\
576576
&dogs[0].name=fido&dogs[0].pet.trained=yes&dogs[0].age=7&dogs[0].pet.barks=no\
577577
&dogs[1].pet.barks=true&dogs[1].name=Bob&dogs[1].pet.trained=no&dogs[1].age=1\
578578
").unwrap();
@@ -593,7 +593,7 @@ fn test_nested_multi() {
593593
]
594594
});
595595

596-
let person: Person = strict("sitting.barks=true&sitting.trained=no\
596+
let person: Person<'_> = strict("sitting.barks=true&sitting.trained=no\
597597
&dogs[0].name=fido&dogs[0].pet.trained=yes&dogs[0].age=7&dogs[0].pet.barks=no\
598598
&dogs[1].pet.barks=true&dogs[1].name=Bob&dogs[1].pet.trained=no&dogs[1].age=1\
599599
&cats[george].pet.nip=paws&cats[george].name=George&cats[george].age=2\
@@ -636,7 +636,7 @@ fn test_multipart() {
636636
}
637637

638638
#[rocket::post("/", data = "<form>")]
639-
fn form(form: Form<MyForm>) {
639+
fn form(form: Form<MyForm<'_>>) {
640640
assert_eq!(form.names, &["abcd", "123"]);
641641
assert_eq!(form.file.name(), Some("foo"));
642642
}
@@ -797,11 +797,11 @@ fn test_defaults() {
797797
}
798798

799799
// `field2` has no default.
800-
assert!(lenient::<FormWithDefaults>("").is_err());
800+
assert!(lenient::<FormWithDefaults<'_>>("").is_err());
801801

802802
// every other field should.
803803
let form_string = &["field2=102"].join("&");
804-
let form1: Option<FormWithDefaults> = lenient(&form_string).ok();
804+
let form1: Option<FormWithDefaults<'_>> = lenient(&form_string).ok();
805805
assert_eq!(form1, Some(FormWithDefaults {
806806
field1: 100,
807807
field2: 102,
@@ -834,12 +834,12 @@ fn test_defaults() {
834834
),
835835
}));
836836

837-
let form2: Option<FormWithDefaults> = strict(&form_string).ok();
837+
let form2: Option<FormWithDefaults<'_>> = strict(&form_string).ok();
838838
assert!(form2.is_none());
839839

840840
// Ensure actual form field values take precedence.
841841
let form_string = &["field1=101", "field2=102", "field3=true", "field5=true"].join("&");
842-
let form3: Option<FormWithDefaults> = lenient(&form_string).ok();
842+
let form3: Option<FormWithDefaults<'_>> = lenient(&form_string).ok();
843843
assert_eq!(form3, Some(FormWithDefaults {
844844
field1: 101,
845845
field2: 102,
@@ -852,7 +852,7 @@ fn test_defaults() {
852852
// And that strict parsing still works.
853853
let form = form3.unwrap();
854854
let form_string = format!("{}", &form as &dyn UriDisplay<Query>);
855-
let form4: form::Result<'_, FormWithDefaults> = strict(&form_string);
855+
let form4: form::Result<'_, FormWithDefaults<'_>> = strict(&form_string);
856856
assert_eq!(form4, Ok(form), "parse from {}", form_string);
857857

858858
#[derive(FromForm, UriDisplayQuery, PartialEq, Debug)]
@@ -940,22 +940,22 @@ struct TokenOwned(String);
940940

941941
#[test]
942942
fn wrapper_works() {
943-
let form: Option<Token> = lenient("").ok();
943+
let form: Option<Token<'_>> = lenient("").ok();
944944
assert_eq!(form, Some(Token("some default hello")));
945945

946946
let form: Option<TokenOwned> = lenient("").ok();
947947
assert_eq!(form, Some(TokenOwned("123456".into())));
948948

949-
let errors = strict::<Token>("").unwrap_err();
949+
let errors = strict::<Token<'_>>("").unwrap_err();
950950
assert!(errors.iter().any(|e| matches!(e.kind, ErrorKind::Missing)));
951951

952-
let form: Option<Token> = lenient("=hi there").ok();
952+
let form: Option<Token<'_>> = lenient("=hi there").ok();
953953
assert_eq!(form, Some(Token("hi there")));
954954

955955
let form: Option<TokenOwned> = strict_encoded("=2318").ok();
956956
assert_eq!(form, Some(TokenOwned("2318".into())));
957957

958-
let errors = lenient::<Token>("=hi").unwrap_err();
958+
let errors = lenient::<Token<'_>>("=hi").unwrap_err();
959959
assert!(errors.iter().any(|e| matches!(e.kind, ErrorKind::InvalidLength { .. })));
960960

961961
let errors = lenient::<TokenOwned>("=hellothere").unwrap_err();

core/codegen/tests/responder.rs

+5-4
Original file line numberDiff line numberDiff line change
@@ -127,19 +127,20 @@ async fn generic_responder() {
127127
let local_req = client.get("/");
128128
let req = local_req.inner();
129129

130-
let v: MyResult<_, (), ContentType, Cookie<'static>> = MyResult::Ok(Json("hi"));
130+
let v: MyResult<'_, _, (), ContentType, Cookie<'static>> = MyResult::Ok(Json("hi"));
131131
let mut r = v.respond_to(req).unwrap();
132132
assert_eq!(r.status(), Status::Ok);
133133
assert_eq!(r.content_type().unwrap(), ContentType::JSON);
134134
assert_eq!(r.body_mut().to_string().await.unwrap(), "\"hi\"");
135135

136-
let v: MyResult<(), &[u8], _, _> = MyResult::Err(&[7, 13, 23], ContentType::JPEG, Accept::Text);
136+
let bytes = &[7, 13, 23];
137+
let v: MyResult<'_, (), &[u8], _, _> = MyResult::Err(bytes, ContentType::JPEG, Accept::Text);
137138
let mut r = v.respond_to(req).unwrap();
138139
assert_eq!(r.status(), Status::NotFound);
139140
assert_eq!(r.content_type().unwrap(), ContentType::JPEG);
140-
assert_eq!(r.body_mut().to_bytes().await.unwrap(), vec![7, 13, 23]);
141+
assert_eq!(r.body_mut().to_bytes().await.unwrap(), bytes);
141142

142-
let v: MyResult<(), &[u8], ContentType, Accept> = MyResult::Other("beep beep");
143+
let v: MyResult<'_, (), &[u8], ContentType, Accept> = MyResult::Other("beep beep");
143144
let mut r = v.respond_to(req).unwrap();
144145
assert_eq!(r.status(), Status::InternalServerError);
145146
assert_eq!(r.content_type().unwrap(), ContentType::Text);

core/codegen/tests/route-raw.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ fn swap(r#raw: String, bare: String) -> String {
1515
}
1616

1717
#[catch(400)]
18-
fn catch(r#raw: &rocket::Request) -> String {
18+
fn catch(r#raw: &rocket::Request<'_>) -> String {
1919
format!("{}", raw.method())
2020
}
2121

core/http/Cargo.toml

+3-5
Original file line numberDiff line numberDiff line change
@@ -15,16 +15,14 @@ categories = ["web-programming"]
1515
edition = "2021"
1616
rust-version = "1.75"
1717

18+
[lints]
19+
workspace = true
20+
1821
[features]
1922
default = []
2023
serde = ["dep:serde", "uncased/with-serde-alloc"]
2124
uuid = ["dep:uuid"]
2225

23-
[lints.clippy]
24-
module_inception = "allow"
25-
multiple_bound_locations = "allow"
26-
manual_range_contains = "allow"
27-
2826
[dependencies]
2927
tinyvec = { version = "1.6", features = ["std", "rustc_1_57"] }
3028
percent-encoding = "2"

0 commit comments

Comments
 (0)