optionable 0.17.2

Derive macro (and associated marker trait) to derive nested structs/enums with all subfields being optional (e.g. for patches or Kubernetes server side apply).
Documentation
[package]
name = "optionable"
version = "0.17.2"
description = "Derive macro (and associated marker trait) to derive nested structs/enums with all subfields being optional (e.g. for patches or Kubernetes server side apply)."
readme = "README.md"
edition.workspace = true
rust-version.workspace = true
license.workspace = true
repository.workspace = true
keywords = ["client", "kubernetes", "patch"]
categories = ["api-bindings", "config", "no-std", "no-std::no-alloc"]

[features]
default = ["derive", "std"]
alloc = []
std = []
derive = ["dep:optionable_derive"]
chrono04 = ["dep:chrono04"]
jiff02 = ["dep:jiff02"]
serde_json = ["dep:serde_json"]
kube3 = ["dep:kube3", "dep:serde", "serde_json", "optionable_derive/kube3"]
kube4 = ["dep:kube4", "dep:serde", "serde_json", "optionable_derive/kube4"]
# k8s openapi and kubernetes versions (i.e. 027_v_1_35 means k8s-openapi v0.27 with the kubernetes feature version v1.35)
k8s_openapi027_v1_31 = ["dep:k8s-openapi027", "dep:serde", "optionable_derive/k8s_openapi", "k8s-openapi027/v1_31", "serde/derive", "serde/std", "serde_json", "std", "jiff02"]
k8s_openapi027_v1_32 = ["dep:k8s-openapi027", "dep:serde", "optionable_derive/k8s_openapi", "k8s-openapi027/v1_32", "serde/derive", "serde/std", "serde_json", "std", "jiff02"]
k8s_openapi027_v1_33 = ["dep:k8s-openapi027", "dep:serde", "optionable_derive/k8s_openapi", "k8s-openapi027/v1_33", "serde/derive", "serde/std", "serde_json", "std", "jiff02"]
k8s_openapi027_v1_34 = ["dep:k8s-openapi027", "dep:serde", "optionable_derive/k8s_openapi", "k8s-openapi027/v1_34", "serde/derive", "serde/std", "serde_json", "std", "jiff02"]
k8s_openapi027_v1_35 = ["dep:k8s-openapi027", "dep:serde", "optionable_derive/k8s_openapi", "k8s-openapi027/v1_35", "serde/derive", "serde/std", "serde_json", "std", "jiff02"]
k8s_openapi028_v1_32 = ["dep:k8s-openapi028", "dep:serde", "optionable_derive/k8s_openapi", "k8s-openapi028/v1_32", "serde/derive", "serde/std", "serde_json", "std", "jiff02"]
k8s_openapi028_v1_33 = ["dep:k8s-openapi028", "dep:serde", "optionable_derive/k8s_openapi", "k8s-openapi028/v1_33", "serde/derive", "serde/std", "serde_json", "std", "jiff02"]
k8s_openapi028_v1_34 = ["dep:k8s-openapi028", "dep:serde", "optionable_derive/k8s_openapi", "k8s-openapi028/v1_34", "serde/derive", "serde/std", "serde_json", "std", "jiff02"]
k8s_openapi028_v1_35 = ["dep:k8s-openapi028", "dep:serde", "optionable_derive/k8s_openapi", "k8s-openapi028/v1_35", "serde/derive", "serde/std", "serde_json", "std", "jiff02"]
k8s_openapi028_v1_36 = ["dep:k8s-openapi028", "dep:serde", "optionable_derive/k8s_openapi", "k8s-openapi028/v1_36", "serde/derive", "serde/std", "serde_json", "std", "jiff02"]
k8s_openapi_convert = []

[lints.clippy]
pedantic = "warn"

[lints.rust]
unexpected_cfgs = { level = "warn", check-cfg = ['cfg(test_k8s_openapi_roundtrip)'] }

[dependencies]
optionable_derive = { version = "0.13.0", optional = true }
chrono04 = { package = "chrono", version = "0.4.45", default-features = false, optional = true }
jiff02 = { package = "jiff", version = "0.2.28", default-features = false, optional = true }
serde = { version = "1.0.228", default-features = false, optional = true }
serde_json = { version = "1.0.150", default-features = false, optional = true }
k8s-openapi027 = { package = "k8s-openapi", version = "0.27.1", default-features = false, optional = true }
k8s-openapi028 = { package = "k8s-openapi", version = "0.28.0", default-features = false, optional = true }
kube3 = { package = "kube", version = "3.1.0", default-features = false, optional = true }
kube4 = { package = "kube", version = "4.0.0", default-features = false, optional = true }

[dev-dependencies]
fake = { version = "5.1.0", default-features = false, features = ["chrono", "derive", "serde_json"] }
serde = { version = "1.0.228", default-features = false, features = ["derive"] }
serde_json = { version = "1.0.150", default-features = false, features = ["alloc"] }
schemars = { version = "1.2.1", default-features = false, features = ["derive"] }

[package.metadata.docs.rs]
rustdoc-args = ["--cfg", "docsrs"]
# std needed for serde_json
# specific k8s_openapi026 version needed for kube
features = ["alloc", "chrono04", "derive", "jiff02", "kube4", "std", "serde_json", "serde_json/std", "k8s-openapi028/v1_36"]
all-features = false