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"