Skip to content

Commit 1a14517

Browse files
committed
Use default-features=false for all deps.
This also disables the extra-traits feature of syn, since it was being used for one `#[derive(Debug)]` that can be done without, and one `!=` involving `AttrStyle` that can be done with `if let` instead. base64, chrono and serde_json have "alloc" and "std" features where one of them is required. In all three cases, it's possible to have both features enabled and that's essentially treated the same as if only the std feature is enabled. So this commit enables the "alloc" feature, and if anything else in the end user's dep tree enables the "std" feature, that's fine. The one noticeable breaking change is that enabling the schemars feature of k8s-openapi no longer enables the derive feature of schemars, so users who want to use `#[derive(schemars::JsonSchema)]` in their own code will need to add an explicit dependency on schemars to enable that feature. Ref: kube-rs/kube#650 (comment)
1 parent 0e5de07 commit 1a14517

File tree

6 files changed

+70
-36
lines changed

6 files changed

+70
-36
lines changed

Cargo.toml

+17-10
Original file line numberDiff line numberDiff line change
@@ -28,16 +28,23 @@ include = [
2828
links = "k8s-openapi-0.13.1"
2929

3030
[dependencies]
31-
base64 = "0.13"
32-
bytes = "1"
33-
chrono = { version = "0.4.1", features = ["serde"] }
34-
http = { version = "0.2", optional = true }
35-
percent-encoding = { version = "2", optional = true }
36-
schemars = { version = "0.8", optional = true }
37-
serde = "1"
38-
serde_json = "1"
39-
serde-value = "0.7"
40-
url = { version = "2", optional = true }
31+
base64 = { version = "0.13", default-features = false, features = [
32+
"alloc", # for base64::decode_config and base64::encode_config
33+
] }
34+
bytes = { version = "1", default-features = false}
35+
chrono = { version = "0.4.1", default-features = false, features = [
36+
"alloc", # for chrono::DateTime::<Utc>::to_rfc3339_opts
37+
"serde", # for chrono::DateTime<Utc>: serde::Deserialize, serde::Serialize
38+
] }
39+
http = { version = "0.2", optional = true, default-features = false }
40+
percent-encoding = { version = "2", optional = true, default-features = false }
41+
schemars = { version = "0.8", optional = true, default-features = false }
42+
serde = { version = "1", default-features = false }
43+
serde_json = { version = "1", default-features = false, features = [
44+
"alloc", # "serde_json requires that either `std` (default) or `alloc` feature is enabled"
45+
] }
46+
serde-value = { version = "0.7", default-features = false }
47+
url = { version = "2", optional = true, default-features = false }
4148

4249
[features]
4350
default = ["api"]

k8s-openapi-codegen-common/Cargo.toml

+5-2
Original file line numberDiff line numberDiff line change
@@ -19,5 +19,8 @@ include = [
1919
]
2020

2121
[dependencies]
22-
http = "0.2"
23-
serde = { version = "1", features = ["derive", "rc"], optional = true }
22+
http = { version = "0.2", default-features = false }
23+
serde = { version = "1", optional = true, default-features = false, features = [
24+
"derive", # for #[derive(serde::Deserialize, serde::Serialize)]
25+
"rc", # for Arc<Parameter>: serde::Deserialize
26+
] }

k8s-openapi-codegen/Cargo.toml

+17-9
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,20 @@ publish = false
66
edition = "2018"
77

88
[dependencies]
9-
backtrace = "0.3"
10-
env_logger = "0.9"
11-
http = "0.2"
12-
k8s-openapi-codegen-common = { path = "../k8s-openapi-codegen-common", features = ["serde"] }
13-
log = "0.4"
14-
reqwest = { version = "0.11", default-features = false, features = ["blocking", "default-tls", "json"] }
15-
serde = "1"
16-
serde_derive = "1"
17-
structopt = "0.3"
9+
backtrace = { version = "0.3", default-features = false, features = [
10+
"std", # for backtrace::Backtrace
11+
] }
12+
env_logger = { version = "0.9", default-features = false }
13+
http = { version = "0.2", default-features = false }
14+
k8s-openapi-codegen-common = { path = "../k8s-openapi-codegen-common", features = [
15+
"serde", # to parse OpenAPI specs from JSON files
16+
] }
17+
log = { version = "0.4", default-features = false }
18+
reqwest = { version = "0.11", default-features = false, features = [
19+
"blocking", # for reqwest::blocking
20+
"default-tls", # for TLS support
21+
"json", # for reqwest::blocking::Response::json
22+
] }
23+
serde = { version = "1", default-features = false }
24+
serde_derive = { version = "1", default-features = false }
25+
structopt = { version = "0.3", default-features = false }

k8s-openapi-derive/Cargo.toml

+8-4
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,15 @@ include = [
1818
]
1919

2020
[dependencies]
21-
http = "0.2"
21+
http = { version = "0.2", default-features = false }
2222
k8s-openapi-codegen-common = { version = "=0.13.1", path = "../k8s-openapi-codegen-common" }
23-
proc-macro2 = "1"
24-
quote = "1"
25-
syn = { version = "1", features = ["extra-traits"] }
23+
proc-macro2 = { version = "1", default-features = false, features = ["proc-macro"] }
24+
quote = { version = "1", default-features = false }
25+
syn = { version = "1", default-features = false, features = [
26+
"derive", # minimal feature for writing custom derives
27+
"parsing", # for syn::parse2, syn::Path::is_ident, syn::Attribute::parse_meta
28+
"printing", # for syn types: quote::ToTokens
29+
] }
2630

2731
[lib]
2832
proc-macro = true

k8s-openapi-derive/src/custom_resource_definition.rs

+7-3
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ use k8s_openapi_codegen_common::swagger20;
22

33
use super::ResultExt;
44

5-
#[derive(Debug)]
65
pub(super) struct CustomResourceDefinition {
76
ident: proc_macro2::Ident,
87
vis: syn::Visibility,
@@ -30,8 +29,13 @@ impl super::CustomDerive for CustomResourceDefinition {
3029
let mut namespaced = false;
3130

3231
for attr in &input.attrs {
33-
if attr.style != syn::AttrStyle::Outer {
34-
continue;
32+
#[allow(clippy::needless_continue)]
33+
{
34+
if let syn::AttrStyle::Outer = attr.style {
35+
}
36+
else {
37+
continue;
38+
}
3539
}
3640

3741
if !attr.path.is_ident("custom_resource_definition") {

k8s-openapi-tests/Cargo.toml

+16-8
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,23 @@ include = [
1111
]
1212

1313
[dependencies]
14-
base64 = "0.13"
15-
dirs = "4"
16-
k8s-openapi = { path = "..", features = ["schemars"] }
14+
base64 = { version = "0.13", default-features = false }
15+
dirs = { version = "4", default-features = false }
16+
k8s-openapi = { path = "..", features = [
17+
"schemars", # for resource types: schemars::JsonSchema
18+
] }
1719
k8s-openapi-derive = { path = "../k8s-openapi-derive" }
18-
openssl = "0.10"
19-
reqwest = { version = "0.11", default-features = false, features = ["blocking", "native-tls"] }
20-
serde = "1"
21-
serde_derive = "1"
22-
serde_yaml = "0.8"
20+
openssl = { version = "0.10", default-features = false }
21+
reqwest = { version = "0.11", default-features = false, features = [
22+
"blocking", # for reqwest::blocking
23+
"native-tls", # for TLS support
24+
] }
25+
schemars = { version = "0.8", default-features = false, features = [
26+
"derive", # for #[derive(schemars::JsonSchema)]
27+
] }
28+
serde = { version = "1", default-features = false }
29+
serde_derive = { version = "1", default-features = false }
30+
serde_yaml = { version = "0.8", default-features = false }
2331

2432
[features]
2533
test_v1_11 = ["k8s-openapi/v1_11"]

0 commit comments

Comments
 (0)