diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 9202da9fe..57be15607 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -17,7 +17,7 @@ env:
CARGO_TERM_COLOR: always
CARGO_INCREMENTAL: '0'
CARGO_PROFILE_DEV_DEBUG: '0'
- RUST_TOOLCHAIN_VERSION: "1.85.0"
+ RUST_TOOLCHAIN_VERSION: "1.87.0"
RUSTFLAGS: "-D warnings"
RUSTDOCFLAGS: "-D warnings"
RUST_LOG: "info"
@@ -38,10 +38,10 @@ jobs:
- uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ env.RUST_TOOLCHAIN_VERSION }}
- - uses: Swatinem/rust-cache@9d47c6ad4b02e050fd481d890b2ea34778fd09d6 # v2.7.8
+ - uses: Swatinem/rust-cache@98c8021b550208e191a6a3145459bfc9fb29c4c0 # v2.8.0
with:
key: udeps
- - run: cargo install --locked cargo-udeps@0.1.55
+ - run: cargo install --locked cargo-udeps@0.1.57
- run: cargo udeps --all-targets --all-features
run_cargodeny:
@@ -60,7 +60,7 @@ jobs:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
persist-credentials: false
- - uses: EmbarkStudios/cargo-deny-action@34899fc7ba81ca6268d5947a7a16b4649013fea1 # v2.0.11
+ - uses: EmbarkStudios/cargo-deny-action@30f817c6f72275c6d54dc744fbca09ebc958599f # v2.0.12
with:
command: check ${{ matrix.checks }}
@@ -75,7 +75,7 @@ jobs:
with:
toolchain: ${{ env.RUST_TOOLCHAIN_VERSION }}
components: rustfmt
- - uses: Swatinem/rust-cache@9d47c6ad4b02e050fd481d890b2ea34778fd09d6 # v2.7.8
+ - uses: Swatinem/rust-cache@98c8021b550208e191a6a3145459bfc9fb29c4c0 # v2.8.0
with:
key: doc
- run: cargo doc --document-private-items
@@ -96,7 +96,7 @@ jobs:
# for our cases.
# See: https://github.com/dtolnay/trybuild/issues/236#issuecomment-1620950759
components: rust-src
- - uses: Swatinem/rust-cache@9d47c6ad4b02e050fd481d890b2ea34778fd09d6 # v2.7.8
+ - uses: Swatinem/rust-cache@98c8021b550208e191a6a3145459bfc9fb29c4c0 # v2.8.0
with:
key: test
- run: cargo test --no-default-features --workspace
diff --git a/.github/workflows/pr_pre-commit.yaml b/.github/workflows/pr_pre-commit.yaml
index a46636b80..ec65d12ae 100644
--- a/.github/workflows/pr_pre-commit.yaml
+++ b/.github/workflows/pr_pre-commit.yaml
@@ -19,7 +19,7 @@ jobs:
with:
persist-credentials: false
fetch-depth: 0
- - uses: stackabletech/actions/run-pre-commit@4bfd3b65f22af597fe784599c077dc34bf5894a7 # v0.8.0
+ - uses: stackabletech/actions/run-pre-commit@4483641a7e24057bd2ba51cb4c3f2f0010ad21b7 # v0.8.4
with:
rust: ${{ env.RUST_TOOLCHAIN_VERSION }}
# rust-src is required for trybuild stderr output comparison to work
diff --git a/.github/workflows/publish-docs.yml b/.github/workflows/publish-docs.yml
index 4dbb5f61a..78c33ad5a 100644
--- a/.github/workflows/publish-docs.yml
+++ b/.github/workflows/publish-docs.yml
@@ -13,7 +13,7 @@ on:
- crates/**
env:
- RUST_TOOLCHAIN_VERSION: "1.85.0"
+ RUST_TOOLCHAIN_VERSION: "1.87.0"
permissions: {}
@@ -37,7 +37,7 @@ jobs:
run: echo '' > target/doc/index.html
- name: Upload Documentation Artifacts
- uses: actions/upload-pages-artifact@56afc609e74202658d3ffba0e8f6dda462b719fa #v3.0.1
+ uses: actions/upload-pages-artifact@56afc609e74202658d3ffba0e8f6dda462b719fa # v3.0.1
with:
path: target/doc
diff --git a/Cargo.lock b/Cargo.lock
index ac895cb7e..bc762a51a 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -316,9 +316,9 @@ checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a"
[[package]]
name = "cc"
-version = "1.2.27"
+version = "1.2.29"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d487aa071b5f64da6f19a3e848e3578944b726ee5a4854b82172f02aa876bfdc"
+checksum = "5c1599538de2394445747c8cf7935946e3cc27e9625f889d979bfb2aaf569362"
dependencies = [
"shlex",
]
@@ -1253,9 +1253,9 @@ dependencies = [
[[package]]
name = "hyper-util"
-version = "0.1.14"
+version = "0.1.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dc2fdfdbff08affe55bb779f33b053aa1fe5dd5b54c257343c17edfa55711bdb"
+checksum = "7f66d5bd4c6f02bf0542fad85d626775bab9258cf795a4256dcaf3161114d1df"
dependencies = [
"base64",
"bytes",
@@ -1417,6 +1417,17 @@ dependencies = [
"walkdir",
]
+[[package]]
+name = "io-uring"
+version = "0.7.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b86e202f00093dcba4275d4636b93ef9dd75d025ae560d2521b45ea28ab49013"
+dependencies = [
+ "bitflags",
+ "cfg-if",
+ "libc",
+]
+
[[package]]
name = "ipnet"
version = "2.11.0"
@@ -2754,9 +2765,9 @@ dependencies = [
[[package]]
name = "serde_spanned"
-version = "0.6.9"
+version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3"
+checksum = "40734c41988f7306bb04f0ecf60ec0f3f1caa34290e4e8ea471dcd3346483b83"
dependencies = [
"serde",
]
@@ -3330,16 +3341,18 @@ dependencies = [
[[package]]
name = "tokio"
-version = "1.45.1"
+version = "1.46.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "75ef51a33ef1da925cea3e4eb122833cb377c61439ca401b770f54902b806779"
+checksum = "0cc3a2344dafbe23a245241fe8b09735b521110d30fcefbbd5feb1797ca35d17"
dependencies = [
"backtrace",
"bytes",
+ "io-uring",
"libc",
"mio",
"pin-project-lite",
"signal-hook-registry",
+ "slab",
"socket2",
"tokio-macros",
"windows-sys 0.52.0",
@@ -3393,14 +3406,17 @@ dependencies = [
[[package]]
name = "toml"
-version = "0.8.23"
+version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362"
+checksum = "f271e09bde39ab52250160a67e88577e0559ad77e9085de6e9051a2c4353f8f8"
dependencies = [
+ "indexmap",
"serde",
"serde_spanned",
- "toml_datetime",
- "toml_edit",
+ "toml_datetime 0.7.0",
+ "toml_parser",
+ "toml_writer",
+ "winnow",
]
[[package]]
@@ -3408,6 +3424,12 @@ name = "toml_datetime"
version = "0.6.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c"
+
+[[package]]
+name = "toml_datetime"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bade1c3e902f58d73d3f294cd7f20391c1cb2fbcb643b73566bc773971df91e3"
dependencies = [
"serde",
]
@@ -3419,18 +3441,24 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a"
dependencies = [
"indexmap",
- "serde",
- "serde_spanned",
- "toml_datetime",
- "toml_write",
+ "toml_datetime 0.6.11",
"winnow",
]
[[package]]
-name = "toml_write"
-version = "0.1.2"
+name = "toml_parser"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b5c1c469eda89749d2230d8156a5969a69ffe0d6d01200581cdc6110674d293e"
+dependencies = [
+ "winnow",
+]
+
+[[package]]
+name = "toml_writer"
+version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801"
+checksum = "b679217f2848de74cabd3e8fc5e6d66f40b7da40f8e1954d92054d9010690fd5"
[[package]]
name = "tonic"
@@ -3624,9 +3652,9 @@ checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b"
[[package]]
name = "trybuild"
-version = "1.0.105"
+version = "1.0.106"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1c9bf9513a2f4aeef5fdac8677d7d349c79fdbcc03b9c86da6e9d254f1e43be2"
+checksum = "65af40ad689f2527aebbd37a0a816aea88ff5f774ceabe99de5be02f2f91dae2"
dependencies = [
"glob",
"serde",
diff --git a/crates/stackable-certs/src/ca/mod.rs b/crates/stackable-certs/src/ca/mod.rs
index b2e464b45..d04da34ef 100644
--- a/crates/stackable-certs/src/ca/mod.rs
+++ b/crates/stackable-certs/src/ca/mod.rs
@@ -128,7 +128,8 @@ where
{
#[snafu(display("failed to retrieve secret \"{secret_ref}\""))]
GetSecret {
- source: kube::Error,
+ #[snafu(source(from(kube::Error, Box::new)))]
+ source: Box,
secret_ref: SecretReference,
},
@@ -146,7 +147,8 @@ where
#[snafu(display("failed to read PEM-encoded certificate chain from secret {secret:?}"))]
ReadChain {
- source: x509_cert::der::Error,
+ #[snafu(source(from(x509_cert::der::Error, Box::new)))]
+ source: Box,
secret: ObjectRef,
},
@@ -154,7 +156,10 @@ where
DecodeUtf8String { source: std::str::Utf8Error },
#[snafu(display("failed to deserialize private key from PEM"))]
- DeserializeKeyFromPem { source: E },
+ DeserializeKeyFromPem {
+ #[snafu(source(from(E, Box::new)))]
+ source: Box,
+ },
}
/// A certificate authority (CA) which is used to generate and sign
diff --git a/crates/stackable-operator/src/cluster_resources.rs b/crates/stackable-operator/src/cluster_resources.rs
index 73d63269a..a7b0c03c1 100644
--- a/crates/stackable-operator/src/cluster_resources.rs
+++ b/crates/stackable-operator/src/cluster_resources.rs
@@ -53,7 +53,10 @@ pub enum Error {
MissingObjectKey { key: &'static str },
#[snafu(display("failed to list cluster resources with label selector"))]
- ListClusterResources { source: crate::client::Error },
+ ListClusterResources {
+ #[snafu(source(from(crate::client::Error, Box::new)))]
+ source: Box,
+ },
#[snafu(display("label {label:?} is missing"))]
MissingLabel { label: &'static str },
@@ -68,13 +71,22 @@ pub enum Error {
},
#[snafu(display("failed to get resource"))]
- GetResource { source: crate::client::Error },
+ GetResource {
+ #[snafu(source(from(crate::client::Error, Box::new)))]
+ source: Box,
+ },
#[snafu(display("failed to apply patch"))]
- ApplyPatch { source: crate::client::Error },
+ ApplyPatch {
+ #[snafu(source(from(crate::client::Error, Box::new)))]
+ source: Box,
+ },
#[snafu(display("failed to delete orphaned resource"))]
- DeleteOrphanedResource { source: crate::client::Error },
+ DeleteOrphanedResource {
+ #[snafu(source(from(crate::client::Error, Box::new)))]
+ source: Box,
+ },
}
/// A cluster resource handled by [`ClusterResources`].
diff --git a/crates/stackable-operator/src/crd/s3/connection/v1alpha1_impl.rs b/crates/stackable-operator/src/crd/s3/connection/v1alpha1_impl.rs
index 29f393359..0c6c1efd7 100644
--- a/crates/stackable-operator/src/crd/s3/connection/v1alpha1_impl.rs
+++ b/crates/stackable-operator/src/crd/s3/connection/v1alpha1_impl.rs
@@ -17,7 +17,8 @@ use crate::{
pub enum ConnectionError {
#[snafu(display("failed to retrieve S3 connection '{s3_connection}'"))]
RetrieveS3Connection {
- source: crate::client::Error,
+ #[snafu(source(from(crate::client::Error, Box::new)))]
+ source: Box,
s3_connection: String,
},
@@ -37,11 +38,15 @@ pub enum ConnectionError {
AddS3TlsClientDetailsVolumes { source: TlsClientDetailsError },
#[snafu(display("failed to add required volumes"))]
- AddVolumes { source: crate::builder::pod::Error },
+ AddVolumes {
+ #[snafu(source(from(crate::builder::pod::Error, Box::new)))]
+ source: Box,
+ },
#[snafu(display("failed to add required volumeMounts"))]
AddVolumeMounts {
- source: crate::builder::pod::container::Error,
+ #[snafu(source(from(crate::builder::pod::container::Error, Box::new)))]
+ source: Box,
},
}
diff --git a/crates/stackable-operator/src/product_config_utils.rs b/crates/stackable-operator/src/product_config_utils.rs
index 0406b451f..1eaed1382 100644
--- a/crates/stackable-operator/src/product_config_utils.rs
+++ b/crates/stackable-operator/src/product_config_utils.rs
@@ -167,9 +167,9 @@ pub fn config_for_role_and_group<'a>(
/// the values are the merged configuration properties "bucketed" by `PropertyNameKind`.
///
/// # Arguments
-/// - `resource` - Not used directly. It's passed on to the `Configuration::compute_*` calls.
-/// - `roles` - A map keyed by role names. The value is a tuple of a vector of `PropertyNameKind`
-/// like (Cli, Env or Files) and [`crate::role_utils::Role`] with a boxed [`Configuration`].
+/// - `resource`: Not used directly. It's passed on to the `Configuration::compute_*` calls.
+/// - `roles`: A map keyed by role names. The value is a tuple of a vector of `PropertyNameKind`
+/// like (Cli, Env or Files) and [`crate::role_utils::Role`] with a boxed [`Configuration`].
#[allow(clippy::type_complexity)]
pub fn transform_all_roles_to_config(
resource: &T::Configurable,
@@ -201,15 +201,15 @@ where
/// and [`RoleConfigByPropertyKind`] which can be obtained via `transform_all_roles_to_config`.
///
/// # Arguments
-/// - `version` - The version of the product to be configured.
-/// - `role_config` - Collected information about all roles, role groups, required
-/// properties sorted by config files, CLI parameters and ENV variables.
-/// - `product_config` - The [`product_config::ProductConfigManager`] used to validate the provided
-/// user data.
-/// - `ignore_warn` - A switch to ignore product config warnings and continue with
-/// the value anyways. Not recommended!
-/// - `ignore_err` - A switch to ignore product config errors and continue with
-/// the value anyways. Not recommended!
+/// - `version`: The version of the product to be configured.
+/// - `role_config`: Collected information about all roles, role groups, required properties sorted
+/// by config files, CLI parameters and ENV variables.
+/// - `product_config`: The [`product_config::ProductConfigManager`] used to validate the provided
+/// user data.
+/// - `ignore_warn`: A switch to ignore product config warnings and continue with the value anyways.
+/// Not recommended!
+/// - `ignore_err`: A switch to ignore product config errors and continue with the value anyways.
+/// Not recommended!
pub fn validate_all_roles_and_groups_config(
version: &str,
role_config: &RoleConfigByPropertyKind,
@@ -244,16 +244,16 @@ pub fn validate_all_roles_and_groups_config(
/// `transform_all_roles_to_config`.
///
/// # Arguments
-/// - `role` - The name of the role
-/// - `version` - The version of the product to be configured.
-/// - `properties_by_kind` - Config properties sorted by PropertyKind
-/// and the resulting user configuration data. See [`RoleConfigByPropertyKind`].
-/// - `product_config` - The [`product_config::ProductConfigManager`] used to validate the provided
-/// user data.
-/// - `ignore_warn` - A switch to ignore product config warnings and continue with
-/// the value anyways. Not recommended!
-/// - `ignore_err` - A switch to ignore product config errors and continue with
-/// the value anyways. Not recommended!
+/// - `role`: The name of the role
+/// - `version`: The version of the product to be configured.
+/// - `properties_by_kind`: Config properties sorted by PropertyKind and the resulting user
+/// configuration data. See [`RoleConfigByPropertyKind`].
+/// - `product_config`: The [`product_config::ProductConfigManager`] used to validate the provided
+/// user data.
+/// - `ignore_warn`: A switch to ignore product config warnings and continue with the value anyways.
+/// Not recommended!
+/// - `ignore_err`: A switch to ignore product config errors and continue with the value anyways.
+/// Not recommended!
fn validate_role_and_group_config(
version: &str,
role: &str,
@@ -290,11 +290,11 @@ fn validate_role_and_group_config(
/// If you want to use the values anyways please check the "ignore_warn" and "ignore_err" switches.
///
/// # Arguments
-/// - `validation_result` - The product config validation result for each property name.
-/// - `ignore_warn` - A switch to ignore product config warnings and continue with
-/// the value anyways. Not recommended!
-/// - `ignore_err` - A switch to ignore product config errors and continue with
-/// the value anyways. Not recommended!
+/// - `validation_result`: The product config validation result for each property name.
+/// - `ignore_warn`: A switch to ignore product config warnings and continue with the value anyways.
+/// Not recommended!
+/// - `ignore_err`: A switch to ignore product config errors and continue with the value anyways.
+/// Not recommended!
// TODO: boolean flags suck, move ignore_warn to be a flag
fn process_validation_result(
validation_result: &BTreeMap,
diff --git a/crates/stackable-operator/src/product_logging/framework.rs b/crates/stackable-operator/src/product_logging/framework.rs
index 6abdfb0f3..d62a6445c 100644
--- a/crates/stackable-operator/src/product_logging/framework.rs
+++ b/crates/stackable-operator/src/product_logging/framework.rs
@@ -228,10 +228,10 @@ pub fn capture_shell_output(
///
/// * `log_dir` - Directory where the log files are stored
/// * `log_file` - Name of the active log file; When the file is rolled over then a number is
-/// appended.
+/// appended.
/// * `max_size_in_mib` - Maximum size of all log files in MiB; This value can be slightly
-/// exceeded. The value is set to 2 if the given value is lower (1 MiB for the active log
-/// file and 1 MiB for the archived one).
+/// exceeded. The value is set to 2 if the given value is lower (1 MiB for the active log
+/// file and 1 MiB for the archived one).
/// * `console_conversion_pattern` - Logback conversion pattern for the console appender
/// * `config` - The logging configuration for the container
///
@@ -349,10 +349,10 @@ log4j.appender.FILE.layout=org.apache.log4j.xml.XMLLayout
///
/// * `log_dir` - Directory where the log files are stored
/// * `log_file` - Name of the active log file; When the file is rolled over then a number is
-/// appended.
+/// appended.
/// * `max_size_in_mib` - Maximum size of all log files in MiB; This value can be slightly
-/// exceeded. The value is set to 2 if the given value is lower (1 MiB for the active log
-/// file and 1 MiB for the archived one).
+/// exceeded. The value is set to 2 if the given value is lower (1 MiB for the active log
+/// file and 1 MiB for the archived one).
/// * `console_conversion_pattern` - Log4j2 conversion pattern for the console appender
/// * `config` - The logging configuration for the container
///
@@ -493,15 +493,15 @@ rootLogger.appenderRef.FILE.ref = FILE"#,
///
/// * `log_dir` - Directory where the log files are stored
/// * `log_file` - Name of the active log file; When the file is rolled over then a number is
-/// appended.
+/// appended.
/// * `max_size_in_mib` - Maximum size of all log files in MiB; This value can be slightly
-/// exceeded. The value is set to 2 if the given value is lower (1 MiB for the active log
-/// file and 1 MiB for the archived one).
+/// exceeded. The value is set to 2 if the given value is lower (1 MiB for the active log
+/// file and 1 MiB for the archived one).
/// * `console_conversion_pattern` - Logback conversion pattern for the console appender
/// * `config` - The logging configuration for the container
/// * `additional_config` - Optional unstructured parameter to add special cases that are not
-/// covered in the logging configuration. Must adhere to the inner logback XML schema as
-/// shown in the example below. It is not parsed or checked and added as is to the `logback.xml`.
+/// covered in the logging configuration. Must adhere to the inner logback XML schema as
+/// shown in the example below. It is not parsed or checked and added as is to the `logback.xml`.
///
/// # Example
///
diff --git a/crates/stackable-operator/src/status/condition/mod.rs b/crates/stackable-operator/src/status/condition/mod.rs
index be600a098..ea4af5b9c 100644
--- a/crates/stackable-operator/src/status/condition/mod.rs
+++ b/crates/stackable-operator/src/status/condition/mod.rs
@@ -26,11 +26,11 @@ pub trait ConditionBuilder {
/// # Arguments
///
/// * `resource` - A cluster resource or status implementing [`HasStatusCondition`] in order to
-/// retrieve the "current" conditions set in the cluster. This is required to compute
-/// condition change and set proper update / transition times.
+/// retrieve the "current" conditions set in the cluster. This is required to compute
+/// condition change and set proper update / transition times.
/// * `condition_builders` - A slice of structs implementing [`ConditionBuilder`]. This can be a
-/// one of the predefined ConditionBuilders like `DaemonSetConditionBuilder` or a custom
-/// implementation for special resources or different behavior.
+/// one of the predefined ConditionBuilders like `DaemonSetConditionBuilder` or a custom
+/// implementation for special resources or different behavior.
///
/// # Examples
/// ```
diff --git a/crates/stackable-operator/src/utils/option.rs b/crates/stackable-operator/src/utils/option.rs
index b8c56520b..fccefdb8b 100644
--- a/crates/stackable-operator/src/utils/option.rs
+++ b/crates/stackable-operator/src/utils/option.rs
@@ -51,13 +51,13 @@ mod tests {
#[test]
fn as_ref_or_else() {
- let maybe: Option = None;
- let defaulted: Cow = maybe.as_ref_or_else(|| "foo".to_string());
- assert_eq!(defaulted, Cow::::Owned("foo".to_string()));
+ let maybe: Option<&str> = None;
+ let defaulted: Cow<&str> = maybe.as_ref_or_else(|| "foo");
+ assert_eq!(defaulted, Cow::<&str>::Owned("foo"));
- let maybe: Option = Some("foo".to_string());
- let defaulted: Cow = maybe.as_ref_or_else(|| panic!());
- assert_eq!(defaulted, Cow::::Borrowed(&"foo".to_string()));
+ let maybe: Option<&str> = Some("foo");
+ let defaulted: Cow<&str> = maybe.as_ref_or_else(|| panic!());
+ assert_eq!(defaulted, Cow::<&str>::Borrowed(&"foo"));
}
#[test]
diff --git a/crates/stackable-versioned-macros/src/attrs/container/k8s.rs b/crates/stackable-versioned-macros/src/attrs/container/k8s.rs
index 88ca013d4..24a4394ce 100644
--- a/crates/stackable-versioned-macros/src/attrs/container/k8s.rs
+++ b/crates/stackable-versioned-macros/src/attrs/container/k8s.rs
@@ -15,11 +15,11 @@ use crate::attrs::common::Override;
/// - `group`: Set the group of the CR object, usually the domain of the company.
/// This argument is Required.
/// - `kind`: Override the kind field of the CR object. This defaults to the struct
-/// name (without the 'Spec' suffix).
+/// name (without the 'Spec' suffix).
/// - `singular`: Set the singular name of the CR object.
/// - `plural`: Set the plural name of the CR object.
/// - `namespaced`: Indicate that this is a namespaced scoped resource rather than a
-/// cluster scoped resource.
+/// cluster scoped resource.
/// - `crates`: Override specific crates.
/// - `status`: Set the specified struct as the status subresource.
/// - `shortname`: Set a shortname for the CR object. This can be specified multiple
diff --git a/crates/stackable-versioned-macros/src/attrs/item/mod.rs b/crates/stackable-versioned-macros/src/attrs/item/mod.rs
index 415a514cb..7f5dec501 100644
--- a/crates/stackable-versioned-macros/src/attrs/item/mod.rs
+++ b/crates/stackable-versioned-macros/src/attrs/item/mod.rs
@@ -336,9 +336,9 @@ impl CommonItemAttributes {
downgrade_with: change.downgrade_with.as_deref().cloned(),
upgrade_with: change.upgrade_with.as_deref().cloned(),
from_ident: from_ident.clone(),
- from_type: from_ty.clone(),
+ from_type: Box::new(from_ty.clone()),
to_ident: ident,
- to_type: ty,
+ to_type: Box::new(ty),
},
);
@@ -354,7 +354,7 @@ impl CommonItemAttributes {
ItemStatus::Addition {
default_fn: added.default_fn.deref().clone(),
ident,
- ty,
+ ty: Box::new(ty),
},
);
}
@@ -387,9 +387,9 @@ impl CommonItemAttributes {
downgrade_with: change.downgrade_with.as_deref().cloned(),
upgrade_with: change.upgrade_with.as_deref().cloned(),
from_ident: from_ident.clone(),
- from_type: from_ty.clone(),
+ from_type: Box::new(from_ty.clone()),
to_ident: ident,
- to_type: ty,
+ to_type: Box::new(ty),
},
);
@@ -405,7 +405,7 @@ impl CommonItemAttributes {
ItemStatus::Addition {
default_fn: added.default_fn.deref().clone(),
ident,
- ty,
+ ty: Box::new(ty),
},
);
}
@@ -420,7 +420,7 @@ impl CommonItemAttributes {
ItemStatus::Addition {
default_fn: added.default_fn.deref().clone(),
ident: ident.deref().clone(),
- ty,
+ ty: Box::new(ty),
},
);
diff --git a/crates/stackable-versioned-macros/src/codegen/changes.rs b/crates/stackable-versioned-macros/src/codegen/changes.rs
index 31e9a6dab..e863f23c9 100644
--- a/crates/stackable-versioned-macros/src/codegen/changes.rs
+++ b/crates/stackable-versioned-macros/src/codegen/changes.rs
@@ -128,7 +128,7 @@ impl ChangesetExt for BTreeMap {
ItemStatus::NoChange {
previously_deprecated: false,
ident: previous_ident.clone(),
- ty: ty.clone(),
+ ty: Box::new(ty.clone()),
},
),
ItemStatus::NoChange {
@@ -151,7 +151,9 @@ impl ChangesetExt for BTreeMap {
ItemStatus::Change {
to_ident, to_type, ..
} => (to_ident, to_type, false),
- ItemStatus::Deprecation { ident, .. } => (ident, ty, true),
+ ItemStatus::Deprecation { ident, .. } => {
+ (ident, &Box::new(ty.clone()), true)
+ }
ItemStatus::NoChange {
previously_deprecated,
ident,
diff --git a/crates/stackable-versioned-macros/src/codegen/mod.rs b/crates/stackable-versioned-macros/src/codegen/mod.rs
index 6c39b2e51..caabd524e 100644
--- a/crates/stackable-versioned-macros/src/codegen/mod.rs
+++ b/crates/stackable-versioned-macros/src/codegen/mod.rs
@@ -105,15 +105,15 @@ pub enum ItemStatus {
default_fn: Path,
// NOTE (@Techassi): We need to carry idents and type information in
// nearly every status. Ideally, we would store this in separate maps.
- ty: Type,
+ ty: Box,
},
Change {
downgrade_with: Option,
upgrade_with: Option,
from_ident: IdentString,
to_ident: IdentString,
- from_type: Type,
- to_type: Type,
+ from_type: Box,
+ to_type: Box,
},
Deprecation {
previous_ident: IdentString,
@@ -123,7 +123,7 @@ pub enum ItemStatus {
NoChange {
previously_deprecated: bool,
ident: IdentString,
- ty: Type,
+ ty: Box,
},
NotPresent,
}
diff --git a/rust-toolchain.toml b/rust-toolchain.toml
index aaba1588e..291696d0e 100644
--- a/rust-toolchain.toml
+++ b/rust-toolchain.toml
@@ -1,3 +1,3 @@
[toolchain]
-channel = "1.85.0"
+channel = "1.87.0"
profile = "default"