diff --git a/Cargo.lock b/Cargo.lock index 02ad7fb0f0575a..91c580a1e4427c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1903,6 +1903,17 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "derive-where" +version = "1.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62d671cc41a825ebabc75757b62d3d168c577f9149b2d49ece1dad1f72119d25" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.85", +] + [[package]] name = "derive_arbitrary" version = "1.3.2" @@ -8881,7 +8892,7 @@ dependencies = [ "assert_matches", "crossbeam-channel", "dashmap", - "derivative", + "derive-where", "lazy_static", "log", "qualifier_attr", diff --git a/Cargo.toml b/Cargo.toml index a34d42cb3a7fcd..420f646e8d409a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -264,7 +264,7 @@ ctrlc = "3.4.5" curve25519-dalek = { version = "4.1.3", features = ["digest", "rand_core"] } dashmap = "5.5.3" derivation-path = { version = "0.2.0", default-features = false } -derivative = "2.2.0" +derive-where = "1.2.7" dialoguer = "0.10.4" digest = "0.10.7" dir-diff = "0.3.3" diff --git a/programs/sbf/Cargo.lock b/programs/sbf/Cargo.lock index 2aed6e364f3ffc..4ddff97627bd4d 100644 --- a/programs/sbf/Cargo.lock +++ b/programs/sbf/Cargo.lock @@ -1370,6 +1370,17 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "derive-where" +version = "1.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62d671cc41a825ebabc75757b62d3d168c577f9149b2d49ece1dad1f72119d25" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.85", +] + [[package]] name = "derive_more" version = "0.99.17" @@ -7372,7 +7383,7 @@ dependencies = [ "assert_matches", "crossbeam-channel", "dashmap", - "derivative", + "derive-where", "log", "qualifier_attr", "scopeguard", diff --git a/unified-scheduler-pool/Cargo.toml b/unified-scheduler-pool/Cargo.toml index 2ceda195039ea1..e1b17308633798 100644 --- a/unified-scheduler-pool/Cargo.toml +++ b/unified-scheduler-pool/Cargo.toml @@ -13,7 +13,7 @@ edition = { workspace = true } assert_matches = { workspace = true } crossbeam-channel = { workspace = true } dashmap = { workspace = true } -derivative = { workspace = true } +derive-where = { workspace = true } log = { workspace = true } qualifier_attr = { workspace = true } scopeguard = { workspace = true } diff --git a/unified-scheduler-pool/src/lib.rs b/unified-scheduler-pool/src/lib.rs index 4787ba0709f4e1..61690f4ff3917f 100644 --- a/unified-scheduler-pool/src/lib.rs +++ b/unified-scheduler-pool/src/lib.rs @@ -14,7 +14,7 @@ use { assert_matches::assert_matches, crossbeam_channel::{self, never, select_biased, Receiver, RecvError, SendError, Sender}, dashmap::DashMap, - derivative::Derivative, + derive_where::derive_where, log::*, scopeguard::defer, solana_ledger::blockstore_processor::{ @@ -570,8 +570,7 @@ mod chained_channel { // P doesn't need to be `: Clone`, yet rustc derive can't handle it. // see https://github.com/rust-lang/rust/issues/26925 - #[derive(Derivative)] - #[derivative(Clone(bound = "C: Clone"))] + #[derive_where(Clone)] pub(super) struct ChainedChannelReceiver { receiver: Receiver>, aux_receiver: Receiver

,