瀏覽代碼

Fix derive_partial_eq_without_eq clippy lint

Michael Vines 3 年之前
父節點
當前提交
b05c7d91ed
共有 100 個文件被更改,包括 247 次插入247 次删除
  1. 3 3
      account-decoder/src/lib.rs
  2. 1 1
      account-decoder/src/parse_account_data.rs
  3. 4 4
      account-decoder/src/parse_bpf_loader.rs
  4. 1 1
      account-decoder/src/parse_config.rs
  5. 2 2
      account-decoder/src/parse_nonce.rs
  6. 3 3
      account-decoder/src/parse_stake.rs
  7. 6 6
      account-decoder/src/parse_sysvar.rs
  8. 3 3
      account-decoder/src/parse_token.rs
  9. 7 7
      account-decoder/src/parse_token_extension.rs
  10. 6 6
      account-decoder/src/parse_vote.rs
  11. 1 1
      account-decoder/src/validator_info.rs
  12. 1 1
      banking-bench/src/main.rs
  13. 4 4
      banks-interface/src/lib.rs
  14. 1 1
      bloom/src/bloom.rs
  15. 1 1
      bucket_map/src/index_entry.rs
  16. 1 1
      cli-config/src/config.rs
  17. 4 4
      cli-output/src/cli_output.rs
  18. 1 1
      cli-output/src/display.rs
  19. 1 1
      cli/src/cluster_query.rs
  20. 2 2
      cli/src/feature.rs
  21. 1 1
      cli/src/inflation.rs
  22. 1 1
      cli/src/program.rs
  23. 1 1
      cli/src/spend_utils.rs
  24. 1 1
      cli/src/stake.rs
  25. 2 2
      client/src/blockhash_query.rs
  26. 1 1
      client/src/nonce_utils.rs
  27. 25 25
      client/src/rpc_config.rs
  28. 4 4
      client/src/rpc_deprecated_config.rs
  29. 1 1
      client/src/rpc_filter.rs
  30. 15 15
      client/src/rpc_response.rs
  31. 1 1
      core/src/ancestor_hashes_service.rs
  32. 1 1
      core/src/banking_stage.rs
  33. 1 1
      core/src/broadcast_stage.rs
  34. 1 1
      core/src/broadcast_stage/broadcast_duplicates_run.rs
  35. 9 9
      core/src/cluster_slot_state_verifier.rs
  36. 1 1
      core/src/consensus.rs
  37. 2 2
      core/src/duplicate_repair_status.rs
  38. 1 1
      core/src/repair_weighted_traversal.rs
  39. 1 1
      core/src/replay_stage.rs
  40. 1 1
      core/src/tower1_7_14.rs
  41. 4 4
      core/src/tower_storage.rs
  42. 2 2
      core/src/validator.rs
  43. 3 3
      dos/src/cli.rs
  44. 1 1
      entry/src/entry.rs
  45. 2 2
      gossip/src/crds.rs
  46. 1 1
      gossip/src/crds_gossip_error.rs
  47. 1 1
      gossip/src/crds_gossip_pull.rs
  48. 9 9
      gossip/src/crds_value.rs
  49. 2 2
      gossip/src/deprecated.rs
  50. 1 1
      gossip/src/duplicate_shred.rs
  51. 5 5
      gossip/src/epoch_slots.rs
  52. 2 2
      install/src/config.rs
  53. 2 2
      install/src/update_manifest.rs
  54. 1 1
      ledger-tool/src/main.rs
  55. 1 1
      ledger/src/block_error.rs
  56. 1 1
      ledger/src/blockstore_db.rs
  57. 11 11
      ledger/src/blockstore_meta.rs
  58. 1 1
      ledger/src/leader_schedule.rs
  59. 4 4
      ledger/src/shred.rs
  60. 2 2
      ledger/src/shred/legacy.rs
  61. 2 2
      merkle-tree/src/merkle_tree.rs
  62. 1 1
      metrics/src/poh_timing_point.rs
  63. 1 1
      net-utils/src/ip_echo_server.rs
  64. 1 1
      perf/src/sigverify.rs
  65. 1 1
      poh/src/poh_recorder.rs
  66. 1 1
      program-runtime/src/compute_budget.rs
  67. 1 1
      program-runtime/src/prioritization_fee.rs
  68. 2 2
      program-runtime/src/timings.rs
  69. 1 1
      program-test/src/lib.rs
  70. 4 4
      programs/address-lookup-table/src/state.rs
  71. 1 1
      programs/bpf_loader/src/lib.rs
  72. 1 1
      programs/bpf_loader/src/syscalls.rs
  73. 1 1
      programs/config/src/config_processor.rs
  74. 3 3
      programs/stake/src/stake_state.rs
  75. 1 1
      programs/vote/src/vote_error.rs
  76. 1 1
      programs/vote/src/vote_state/mod.rs
  77. 1 1
      remote-wallet/src/ledger_error.rs
  78. 4 4
      remote-wallet/src/locator.rs
  79. 1 1
      rpc/src/rpc_health.rs
  80. 1 1
      rpc/src/rpc_subscriptions.rs
  81. 1 1
      runtime/src/account_info.rs
  82. 1 1
      runtime/src/account_rent_state.rs
  83. 1 1
      runtime/src/accounts.rs
  84. 4 4
      runtime/src/accounts_db.rs
  85. 2 2
      runtime/src/accounts_hash.rs
  86. 1 1
      runtime/src/accounts_index.rs
  87. 1 1
      runtime/src/ancient_append_vecs.rs
  88. 2 2
      runtime/src/append_vec.rs
  89. 9 9
      runtime/src/bank.rs
  90. 1 1
      runtime/src/expected_rent_collection.rs
  91. 2 2
      runtime/src/serde_snapshot/newer.rs
  92. 1 1
      runtime/src/stake_history.rs
  93. 1 1
      runtime/src/stakes.rs
  94. 1 1
      runtime/src/system_instruction_processor.rs
  95. 1 1
      runtime/src/vote_transaction.rs
  96. 1 1
      sdk/program/src/address_lookup_table_account.rs
  97. 4 4
      sdk/program/src/borsh.rs
  98. 1 1
      sdk/program/src/bpf_loader_upgradeable.rs
  99. 1 1
      sdk/program/src/clock.rs
  100. 1 1
      sdk/program/src/decode_error.rs

+ 3 - 3
account-decoder/src/lib.rs

@@ -34,7 +34,7 @@ pub type StringDecimals = String;
 pub const MAX_BASE58_BYTES: usize = 128;
 
 /// A duplicate representation of an Account for pretty JSON serialization
-#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
+#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq)]
 #[serde(rename_all = "camelCase")]
 pub struct UiAccount {
     pub lamports: u64,
@@ -44,7 +44,7 @@ pub struct UiAccount {
     pub rent_epoch: Epoch,
 }
 
-#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
+#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
 #[serde(rename_all = "camelCase", untagged)]
 pub enum UiAccountData {
     LegacyBinary(String), // Legacy. Retained for RPC backwards compatibility
@@ -157,7 +157,7 @@ impl UiAccount {
     }
 }
 
-#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
+#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq)]
 #[serde(rename_all = "camelCase")]
 pub struct UiFeeCalculator {
     pub lamports_per_signature: StringAmount,

+ 1 - 1
account-decoder/src/parse_account_data.rs

@@ -57,7 +57,7 @@ pub enum ParseAccountError {
     SerdeJsonError(#[from] serde_json::error::Error),
 }
 
-#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
+#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
 #[serde(rename_all = "camelCase")]
 pub struct ParsedAccount {
     pub program: String,

+ 4 - 4
account-decoder/src/parse_bpf_loader.rs

@@ -60,7 +60,7 @@ pub fn parse_bpf_upgradeable_loader(
     Ok(parsed_account)
 }
 
-#[derive(Debug, Serialize, Deserialize, PartialEq)]
+#[derive(Debug, Serialize, Deserialize, PartialEq, Eq)]
 #[serde(rename_all = "camelCase", tag = "type", content = "info")]
 pub enum BpfUpgradeableLoaderAccountType {
     Uninitialized,
@@ -69,20 +69,20 @@ pub enum BpfUpgradeableLoaderAccountType {
     ProgramData(UiProgramData),
 }
 
-#[derive(Debug, Serialize, Deserialize, PartialEq)]
+#[derive(Debug, Serialize, Deserialize, PartialEq, Eq)]
 #[serde(rename_all = "camelCase")]
 pub struct UiBuffer {
     pub authority: Option<String>,
     pub data: UiAccountData,
 }
 
-#[derive(Debug, Serialize, Deserialize, PartialEq)]
+#[derive(Debug, Serialize, Deserialize, PartialEq, Eq)]
 #[serde(rename_all = "camelCase")]
 pub struct UiProgram {
     pub program_data: String,
 }
 
-#[derive(Debug, Serialize, Deserialize, PartialEq)]
+#[derive(Debug, Serialize, Deserialize, PartialEq, Eq)]
 #[serde(rename_all = "camelCase")]
 pub struct UiProgramData {
     pub slot: u64,

+ 1 - 1
account-decoder/src/parse_config.rs

@@ -59,7 +59,7 @@ pub enum ConfigAccountType {
     ValidatorInfo(UiConfig<Value>),
 }
 
-#[derive(Debug, Serialize, Deserialize, PartialEq)]
+#[derive(Debug, Serialize, Deserialize, PartialEq, Eq)]
 #[serde(rename_all = "camelCase")]
 pub struct UiConfigKey {
     pub pubkey: String,

+ 2 - 2
account-decoder/src/parse_nonce.rs

@@ -27,14 +27,14 @@ pub fn parse_nonce(data: &[u8]) -> Result<UiNonceState, ParseAccountError> {
 }
 
 /// A duplicate representation of NonceState for pretty JSON serialization
-#[derive(Debug, Serialize, Deserialize, PartialEq)]
+#[derive(Debug, Serialize, Deserialize, PartialEq, Eq)]
 #[serde(rename_all = "camelCase", tag = "type", content = "info")]
 pub enum UiNonceState {
     Uninitialized,
     Initialized(UiNonceData),
 }
 
-#[derive(Debug, Serialize, Deserialize, PartialEq)]
+#[derive(Debug, Serialize, Deserialize, PartialEq, Eq)]
 #[serde(rename_all = "camelCase")]
 pub struct UiNonceData {
     pub authority: String,

+ 3 - 3
account-decoder/src/parse_stake.rs

@@ -44,7 +44,7 @@ pub struct UiStakeAccount {
     pub stake: Option<UiStake>,
 }
 
-#[derive(Debug, Serialize, Deserialize, PartialEq)]
+#[derive(Debug, Serialize, Deserialize, PartialEq, Eq)]
 #[serde(rename_all = "camelCase")]
 pub struct UiMeta {
     pub rent_exempt_reserve: StringAmount,
@@ -62,7 +62,7 @@ impl From<Meta> for UiMeta {
     }
 }
 
-#[derive(Debug, Serialize, Deserialize, PartialEq)]
+#[derive(Debug, Serialize, Deserialize, PartialEq, Eq)]
 #[serde(rename_all = "camelCase")]
 pub struct UiLockup {
     pub unix_timestamp: UnixTimestamp,
@@ -80,7 +80,7 @@ impl From<Lockup> for UiLockup {
     }
 }
 
-#[derive(Debug, Serialize, Deserialize, PartialEq)]
+#[derive(Debug, Serialize, Deserialize, PartialEq, Eq)]
 #[serde(rename_all = "camelCase")]
 pub struct UiAuthorized {
     pub staker: String,

+ 6 - 6
account-decoder/src/parse_sysvar.rs

@@ -107,7 +107,7 @@ pub enum SysvarAccountType {
     StakeHistory(Vec<UiStakeHistoryEntry>),
 }
 
-#[derive(Debug, Serialize, Deserialize, PartialEq, Default)]
+#[derive(Debug, Serialize, Deserialize, PartialEq, Eq, Default)]
 #[serde(rename_all = "camelCase")]
 pub struct UiClock {
     pub slot: Slot,
@@ -129,7 +129,7 @@ impl From<Clock> for UiClock {
     }
 }
 
-#[derive(Debug, Serialize, Deserialize, PartialEq, Default)]
+#[derive(Debug, Serialize, Deserialize, PartialEq, Eq, Default)]
 #[serde(rename_all = "camelCase")]
 pub struct UiFees {
     pub fee_calculator: UiFeeCalculator,
@@ -175,21 +175,21 @@ impl From<Rewards> for UiRewards {
     }
 }
 
-#[derive(Debug, Serialize, Deserialize, PartialEq)]
+#[derive(Debug, Serialize, Deserialize, PartialEq, Eq)]
 #[serde(rename_all = "camelCase")]
 pub struct UiRecentBlockhashesEntry {
     pub blockhash: String,
     pub fee_calculator: UiFeeCalculator,
 }
 
-#[derive(Debug, Serialize, Deserialize, PartialEq)]
+#[derive(Debug, Serialize, Deserialize, PartialEq, Eq)]
 #[serde(rename_all = "camelCase")]
 pub struct UiSlotHashEntry {
     pub slot: Slot,
     pub hash: String,
 }
 
-#[derive(Debug, Serialize, Deserialize, PartialEq)]
+#[derive(Debug, Serialize, Deserialize, PartialEq, Eq)]
 #[serde(rename_all = "camelCase")]
 pub struct UiSlotHistory {
     pub next_slot: Slot,
@@ -211,7 +211,7 @@ impl std::fmt::Debug for SlotHistoryBits {
     }
 }
 
-#[derive(Debug, Serialize, Deserialize, PartialEq)]
+#[derive(Debug, Serialize, Deserialize, PartialEq, Eq)]
 #[serde(rename_all = "camelCase")]
 pub struct UiStakeHistoryEntry {
     pub epoch: Epoch,

+ 3 - 3
account-decoder/src/parse_token.rs

@@ -179,7 +179,7 @@ pub struct UiTokenAccount {
     pub extensions: Vec<UiExtension>,
 }
 
-#[derive(Debug, Serialize, Deserialize, PartialEq)]
+#[derive(Debug, Serialize, Deserialize, PartialEq, Eq)]
 #[serde(rename_all = "camelCase")]
 pub enum UiAccountState {
     Uninitialized,
@@ -260,7 +260,7 @@ pub fn token_amount_to_ui_amount(amount: u64, decimals: u8) -> UiTokenAmount {
     }
 }
 
-#[derive(Debug, Serialize, Deserialize, PartialEq)]
+#[derive(Debug, Serialize, Deserialize, PartialEq, Eq)]
 #[serde(rename_all = "camelCase")]
 pub struct UiMint {
     pub mint_authority: Option<String>,
@@ -272,7 +272,7 @@ pub struct UiMint {
     pub extensions: Vec<UiExtension>,
 }
 
-#[derive(Debug, Serialize, Deserialize, PartialEq)]
+#[derive(Debug, Serialize, Deserialize, PartialEq, Eq)]
 #[serde(rename_all = "camelCase")]
 pub struct UiMultisig {
     pub num_required_signers: u8,

+ 7 - 7
account-decoder/src/parse_token_extension.rs

@@ -6,7 +6,7 @@ use {
     },
 };
 
-#[derive(Debug, Serialize, Deserialize, PartialEq)]
+#[derive(Debug, Serialize, Deserialize, PartialEq, Eq)]
 #[serde(rename_all = "camelCase", tag = "extension", content = "state")]
 pub enum UiExtension {
     Uninitialized,
@@ -53,7 +53,7 @@ pub fn parse_extension<S: BaseState>(
     }
 }
 
-#[derive(Debug, Serialize, Deserialize, PartialEq)]
+#[derive(Debug, Serialize, Deserialize, PartialEq, Eq)]
 #[serde(rename_all = "camelCase")]
 pub struct UiTransferFee {
     pub epoch: u64,
@@ -71,7 +71,7 @@ impl From<extension::transfer_fee::TransferFee> for UiTransferFee {
     }
 }
 
-#[derive(Debug, Serialize, Deserialize, PartialEq)]
+#[derive(Debug, Serialize, Deserialize, PartialEq, Eq)]
 #[serde(rename_all = "camelCase")]
 pub struct UiTransferFeeConfig {
     pub transfer_fee_config_authority: Option<String>,
@@ -100,7 +100,7 @@ impl From<extension::transfer_fee::TransferFeeConfig> for UiTransferFeeConfig {
     }
 }
 
-#[derive(Debug, Serialize, Deserialize, PartialEq)]
+#[derive(Debug, Serialize, Deserialize, PartialEq, Eq)]
 #[serde(rename_all = "camelCase")]
 pub struct UiTransferFeeAmount {
     pub withheld_amount: u64,
@@ -114,7 +114,7 @@ impl From<extension::transfer_fee::TransferFeeAmount> for UiTransferFeeAmount {
     }
 }
 
-#[derive(Debug, Serialize, Deserialize, PartialEq)]
+#[derive(Debug, Serialize, Deserialize, PartialEq, Eq)]
 #[serde(rename_all = "camelCase")]
 pub struct UiMintCloseAuthority {
     pub close_authority: Option<String>,
@@ -129,7 +129,7 @@ impl From<extension::mint_close_authority::MintCloseAuthority> for UiMintCloseAu
     }
 }
 
-#[derive(Debug, Serialize, Deserialize, PartialEq)]
+#[derive(Debug, Serialize, Deserialize, PartialEq, Eq)]
 #[serde(rename_all = "camelCase")]
 pub struct UiDefaultAccountState {
     pub account_state: UiAccountState,
@@ -146,7 +146,7 @@ impl From<extension::default_account_state::DefaultAccountState> for UiDefaultAc
     }
 }
 
-#[derive(Debug, Serialize, Deserialize, PartialEq)]
+#[derive(Debug, Serialize, Deserialize, PartialEq, Eq)]
 #[serde(rename_all = "camelCase")]
 pub struct UiMemoTransfer {
     pub require_incoming_transfer_memos: bool,

+ 6 - 6
account-decoder/src/parse_vote.rs

@@ -61,14 +61,14 @@ pub fn parse_vote(data: &[u8]) -> Result<VoteAccountType, ParseAccountError> {
 }
 
 /// A wrapper enum for consistency across programs
-#[derive(Debug, Serialize, Deserialize, PartialEq)]
+#[derive(Debug, Serialize, Deserialize, PartialEq, Eq)]
 #[serde(rename_all = "camelCase", tag = "type", content = "info")]
 pub enum VoteAccountType {
     Vote(UiVoteState),
 }
 
 /// A duplicate representation of VoteState for pretty JSON serialization
-#[derive(Debug, Serialize, Deserialize, Default, PartialEq)]
+#[derive(Debug, Serialize, Deserialize, Default, PartialEq, Eq)]
 #[serde(rename_all = "camelCase")]
 pub struct UiVoteState {
     node_pubkey: String,
@@ -82,7 +82,7 @@ pub struct UiVoteState {
     last_timestamp: BlockTimestamp,
 }
 
-#[derive(Debug, Serialize, Deserialize, PartialEq)]
+#[derive(Debug, Serialize, Deserialize, PartialEq, Eq)]
 #[serde(rename_all = "camelCase")]
 struct UiLockout {
     slot: Slot,
@@ -98,14 +98,14 @@ impl From<&Lockout> for UiLockout {
     }
 }
 
-#[derive(Debug, Serialize, Deserialize, PartialEq)]
+#[derive(Debug, Serialize, Deserialize, PartialEq, Eq)]
 #[serde(rename_all = "camelCase")]
 struct UiAuthorizedVoters {
     epoch: Epoch,
     authorized_voter: String,
 }
 
-#[derive(Debug, Serialize, Deserialize, PartialEq)]
+#[derive(Debug, Serialize, Deserialize, PartialEq, Eq)]
 #[serde(rename_all = "camelCase")]
 struct UiPriorVoters {
     authorized_pubkey: String,
@@ -113,7 +113,7 @@ struct UiPriorVoters {
     target_epoch: Epoch,
 }
 
-#[derive(Debug, Serialize, Deserialize, PartialEq)]
+#[derive(Debug, Serialize, Deserialize, PartialEq, Eq)]
 #[serde(rename_all = "camelCase")]
 struct UiEpochCredits {
     epoch: Epoch,

+ 1 - 1
account-decoder/src/validator_info.rs

@@ -6,7 +6,7 @@ pub const MAX_VALIDATOR_INFO: u64 = 576;
 
 solana_sdk::declare_id!("Va1idator1nfo111111111111111111111111111111");
 
-#[derive(Debug, Deserialize, PartialEq, Serialize, Default)]
+#[derive(Debug, Deserialize, PartialEq, Eq, Serialize, Default)]
 pub struct ValidatorInfo {
     pub info: String,
 }

+ 1 - 1
banking-bench/src/main.rs

@@ -65,7 +65,7 @@ fn check_txs(
     no_bank
 }
 
-#[derive(ArgEnum, Clone, Copy, PartialEq)]
+#[derive(ArgEnum, Clone, Copy, PartialEq, Eq)]
 enum WriteLockContention {
     /// No transactions lock the same accounts.
     None,

+ 4 - 4
banks-interface/src/lib.rs

@@ -16,14 +16,14 @@ use {
     },
 };
 
-#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
+#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
 pub enum TransactionConfirmationStatus {
     Processed,
     Confirmed,
     Finalized,
 }
 
-#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
+#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
 pub struct TransactionStatus {
     pub slot: Slot,
     pub confirmations: Option<usize>, // None = rooted
@@ -31,7 +31,7 @@ pub struct TransactionStatus {
     pub confirmation_status: Option<TransactionConfirmationStatus>,
 }
 
-#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
+#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
 #[serde(rename_all = "camelCase")]
 pub struct TransactionSimulationDetails {
     pub logs: Vec<String>,
@@ -39,7 +39,7 @@ pub struct TransactionSimulationDetails {
     pub return_data: Option<TransactionReturnData>,
 }
 
-#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
+#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
 pub struct BanksTransactionResultWithSimulation {
     pub result: Option<transaction::Result<()>>,
     pub simulation_details: Option<TransactionSimulationDetails>,

+ 1 - 1
bloom/src/bloom.rs

@@ -19,7 +19,7 @@ pub trait BloomHashIndex {
     fn hash_at_index(&self, hash_index: u64) -> u64;
 }
 
-#[derive(Serialize, Deserialize, Default, Clone, PartialEq, AbiExample)]
+#[derive(Serialize, Deserialize, Default, Clone, PartialEq, Eq, AbiExample)]
 pub struct Bloom<T: BloomHashIndex> {
     pub keys: Vec<u64>,
     pub bits: BitVec<u64>,

+ 1 - 1
bucket_map/src/index_entry.rs

@@ -16,7 +16,7 @@ use {
 };
 
 #[repr(C)]
-#[derive(Debug, Copy, Clone, PartialEq)]
+#[derive(Debug, Copy, Clone, PartialEq, Eq)]
 // one instance of this per item in the index
 // stored in the index bucket
 pub struct IndexEntry {

+ 1 - 1
cli-config/src/config.rs

@@ -25,7 +25,7 @@ lazy_static! {
 }
 
 /// The Solana CLI configuration.
-#[derive(Serialize, Deserialize, Debug, PartialEq)]
+#[derive(Serialize, Deserialize, Debug, PartialEq, Eq)]
 pub struct Config {
     /// The RPC address of a Solana validator node.
     ///

+ 4 - 4
cli-output/src/cli_output.rs

@@ -52,7 +52,7 @@ static CHECK_MARK: Emoji = Emoji("✅ ", "");
 static CROSS_MARK: Emoji = Emoji("❌ ", "");
 static WARNING: Emoji = Emoji("⚠️", "!");
 
-#[derive(PartialEq, Debug)]
+#[derive(PartialEq, Eq, Debug)]
 pub enum OutputFormat {
     Display,
     Json,
@@ -347,7 +347,7 @@ pub struct CliValidatorsStakeByVersion {
     pub delinquent_active_stake: u64,
 }
 
-#[derive(Serialize, Deserialize, Debug, PartialEq, Clone, Copy)]
+#[derive(Serialize, Deserialize, Debug, PartialEq, Eq, Clone, Copy)]
 pub enum CliValidatorsSortOrder {
     Delinquent,
     Commission,
@@ -1207,7 +1207,7 @@ impl fmt::Display for CliStakeState {
     }
 }
 
-#[derive(Serialize, Deserialize, PartialEq)]
+#[derive(Serialize, Deserialize, PartialEq, Eq)]
 pub enum CliStakeType {
     Stake,
     RewardsPool,
@@ -1604,7 +1604,7 @@ impl fmt::Display for CliInflation {
     }
 }
 
-#[derive(Serialize, Deserialize, Default, Debug, PartialEq)]
+#[derive(Serialize, Deserialize, Default, Debug, PartialEq, Eq)]
 #[serde(rename_all = "camelCase")]
 pub struct CliSignOnlyData {
     pub blockhash: String,

+ 1 - 1
cli-output/src/display.rs

@@ -370,7 +370,7 @@ fn write_signatures<W: io::Write>(
     Ok(())
 }
 
-#[derive(Debug, Clone, Copy, PartialEq)]
+#[derive(Debug, Clone, Copy, PartialEq, Eq)]
 enum AccountKeyType<'a> {
     Known(&'a Pubkey),
     Unknown {

+ 1 - 1
cli/src/cluster_query.rs

@@ -2099,7 +2099,7 @@ impl fmt::Display for CliRentCalculation {
 impl QuietDisplay for CliRentCalculation {}
 impl VerboseDisplay for CliRentCalculation {}
 
-#[derive(Debug, PartialEq)]
+#[derive(Debug, PartialEq, Eq)]
 pub enum RentLengthValue {
     Nonce,
     Stake,

+ 2 - 2
cli/src/feature.rs

@@ -25,14 +25,14 @@ use {
 
 const DEFAULT_MAX_ACTIVE_DISPLAY_AGE_SLOTS: Slot = 15_000_000; // ~90days
 
-#[derive(Copy, Clone, Debug, PartialEq)]
+#[derive(Copy, Clone, Debug, PartialEq, Eq)]
 pub enum ForceActivation {
     No,
     Almost,
     Yes,
 }
 
-#[derive(Debug, PartialEq)]
+#[derive(Debug, PartialEq, Eq)]
 pub enum FeatureCliCommand {
     Status {
         features: Vec<Pubkey>,

+ 1 - 1
cli/src/inflation.rs

@@ -15,7 +15,7 @@ use {
     std::sync::Arc,
 };
 
-#[derive(Debug, PartialEq)]
+#[derive(Debug, PartialEq, Eq)]
 pub enum InflationCliCommand {
     Show,
     Rewards(Vec<Pubkey>, Option<Epoch>),

+ 1 - 1
cli/src/program.rs

@@ -54,7 +54,7 @@ use {
     },
 };
 
-#[derive(Debug, PartialEq)]
+#[derive(Debug, PartialEq, Eq)]
 pub enum ProgramCliCommand {
     Deploy {
         program_location: Option<String>,

+ 1 - 1
cli/src/spend_utils.rs

@@ -12,7 +12,7 @@ use {
     },
 };
 
-#[derive(Debug, PartialEq, Clone, Copy)]
+#[derive(Debug, PartialEq, Eq, Clone, Copy)]
 pub enum SpendAmount {
     All,
     Some(u64),

+ 1 - 1
cli/src/stake.rs

@@ -103,7 +103,7 @@ pub(crate) struct StakeAuthorization {
     authority_pubkey: Option<Pubkey>,
 }
 
-#[derive(Debug, PartialEq)]
+#[derive(Debug, PartialEq, Eq)]
 pub struct StakeAuthorizationIndexed {
     pub authorization_type: StakeAuthorize,
     pub new_authority_pubkey: Pubkey,

+ 2 - 2
client/src/blockhash_query.rs

@@ -12,7 +12,7 @@ use {
     },
 };
 
-#[derive(Debug, PartialEq)]
+#[derive(Debug, PartialEq, Eq)]
 pub enum Source {
     Cluster,
     NonceAccount(Pubkey),
@@ -107,7 +107,7 @@ impl Source {
     }
 }
 
-#[derive(Debug, PartialEq)]
+#[derive(Debug, PartialEq, Eq)]
 pub enum BlockhashQuery {
     None(Hash),
     FeeCalculator(Source, Hash),

+ 1 - 1
client/src/nonce_utils.rs

@@ -16,7 +16,7 @@ use {
     },
 };
 
-#[derive(Debug, thiserror::Error, PartialEq)]
+#[derive(Debug, thiserror::Error, PartialEq, Eq)]
 pub enum Error {
     #[error("invalid account owner")]
     InvalidAccountOwner,

+ 25 - 25
client/src/rpc_config.rs

@@ -8,13 +8,13 @@ use {
     solana_transaction_status::{TransactionDetails, UiTransactionEncoding},
 };
 
-#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
+#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
 #[serde(rename_all = "camelCase")]
 pub struct RpcSignatureStatusConfig {
     pub search_transaction_history: bool,
 }
 
-#[derive(Debug, Default, Clone, Copy, PartialEq, Serialize, Deserialize)]
+#[derive(Debug, Default, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
 #[serde(rename_all = "camelCase")]
 pub struct RpcSendTransactionConfig {
     #[serde(default)]
@@ -25,14 +25,14 @@ pub struct RpcSendTransactionConfig {
     pub min_context_slot: Option<Slot>,
 }
 
-#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
+#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
 #[serde(rename_all = "camelCase")]
 pub struct RpcSimulateTransactionAccountsConfig {
     pub encoding: Option<UiAccountEncoding>,
     pub addresses: Vec<String>,
 }
 
-#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
+#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
 #[serde(rename_all = "camelCase")]
 pub struct RpcSimulateTransactionConfig {
     #[serde(default)]
@@ -46,7 +46,7 @@ pub struct RpcSimulateTransactionConfig {
     pub min_context_slot: Option<Slot>,
 }
 
-#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
+#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
 #[serde(rename_all = "camelCase")]
 pub struct RpcRequestAirdropConfig {
     pub recent_blockhash: Option<String>, // base-58 encoded blockhash
@@ -54,7 +54,7 @@ pub struct RpcRequestAirdropConfig {
     pub commitment: Option<CommitmentConfig>,
 }
 
-#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
+#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
 #[serde(rename_all = "camelCase")]
 pub struct RpcLeaderScheduleConfig {
     pub identity: Option<String>, // validator identity, as a base-58 encoded string
@@ -62,7 +62,7 @@ pub struct RpcLeaderScheduleConfig {
     pub commitment: Option<CommitmentConfig>,
 }
 
-#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
+#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
 #[serde(rename_all = "camelCase")]
 pub struct RpcBlockProductionConfigRange {
     pub first_slot: Slot,
@@ -78,7 +78,7 @@ pub struct RpcBlockProductionConfig {
     pub commitment: Option<CommitmentConfig>,
 }
 
-#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
+#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
 #[serde(rename_all = "camelCase")]
 pub struct RpcGetVoteAccountsConfig {
     pub vote_pubkey: Option<String>, // validator vote address, as a base-58 encoded string
@@ -88,7 +88,7 @@ pub struct RpcGetVoteAccountsConfig {
     pub delinquent_slot_distance: Option<u64>,
 }
 
-#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
+#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
 #[serde(untagged)]
 pub enum RpcLeaderScheduleConfigWrapper {
     SlotOnly(Option<Slot>),
@@ -111,7 +111,7 @@ pub enum RpcLargestAccountsFilter {
     NonCirculating,
 }
 
-#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
+#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
 #[serde(rename_all = "camelCase")]
 pub struct RpcLargestAccountsConfig {
     #[serde(flatten)]
@@ -119,7 +119,7 @@ pub struct RpcLargestAccountsConfig {
     pub filter: Option<RpcLargestAccountsFilter>,
 }
 
-#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
+#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
 #[serde(rename_all = "camelCase")]
 pub struct RpcSupplyConfig {
     #[serde(flatten)]
@@ -128,7 +128,7 @@ pub struct RpcSupplyConfig {
     pub exclude_non_circulating_accounts_list: bool,
 }
 
-#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
+#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
 #[serde(rename_all = "camelCase")]
 pub struct RpcEpochConfig {
     pub epoch: Option<Epoch>,
@@ -137,7 +137,7 @@ pub struct RpcEpochConfig {
     pub min_context_slot: Option<Slot>,
 }
 
-#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
+#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
 #[serde(rename_all = "camelCase")]
 pub struct RpcAccountInfoConfig {
     pub encoding: Option<UiAccountEncoding>,
@@ -147,7 +147,7 @@ pub struct RpcAccountInfoConfig {
     pub min_context_slot: Option<Slot>,
 }
 
-#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
+#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
 #[serde(rename_all = "camelCase")]
 pub struct RpcProgramAccountsConfig {
     pub filters: Option<Vec<RpcFilterType>>,
@@ -156,7 +156,7 @@ pub struct RpcProgramAccountsConfig {
     pub with_context: Option<bool>,
 }
 
-#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
+#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
 #[serde(rename_all = "camelCase")]
 pub enum RpcTransactionLogsFilter {
     All,
@@ -164,21 +164,21 @@ pub enum RpcTransactionLogsFilter {
     Mentions(Vec<String>), // base58-encoded list of addresses
 }
 
-#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
+#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
 #[serde(rename_all = "camelCase")]
 pub struct RpcTransactionLogsConfig {
     #[serde(flatten)]
     pub commitment: Option<CommitmentConfig>,
 }
 
-#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
+#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
 #[serde(rename_all = "camelCase")]
 pub enum RpcTokenAccountsFilter {
     Mint(String),
     ProgramId(String),
 }
 
-#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
+#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
 #[serde(rename_all = "camelCase")]
 pub struct RpcSignatureSubscribeConfig {
     #[serde(flatten)]
@@ -186,14 +186,14 @@ pub struct RpcSignatureSubscribeConfig {
     pub enable_received_notification: Option<bool>,
 }
 
-#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
+#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
 #[serde(rename_all = "camelCase")]
 pub enum RpcBlockSubscribeFilter {
     All,
     MentionsAccountOrProgram(String),
 }
 
-#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
+#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
 #[serde(rename_all = "camelCase")]
 pub struct RpcBlockSubscribeConfig {
     #[serde(flatten)]
@@ -204,7 +204,7 @@ pub struct RpcBlockSubscribeConfig {
     pub max_supported_transaction_version: Option<u8>,
 }
 
-#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
+#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
 #[serde(rename_all = "camelCase")]
 pub struct RpcSignaturesForAddressConfig {
     pub before: Option<String>, // Signature as base-58 string
@@ -246,7 +246,7 @@ pub trait EncodingConfig {
     fn new_with_encoding(encoding: &Option<UiTransactionEncoding>) -> Self;
 }
 
-#[derive(Debug, Clone, Copy, Default, PartialEq, Serialize, Deserialize)]
+#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Serialize, Deserialize)]
 #[serde(rename_all = "camelCase")]
 pub struct RpcBlockConfig {
     pub encoding: Option<UiTransactionEncoding>,
@@ -289,7 +289,7 @@ impl From<RpcBlockConfig> for RpcEncodingConfigWrapper<RpcBlockConfig> {
     }
 }
 
-#[derive(Debug, Clone, Copy, Default, PartialEq, Serialize, Deserialize)]
+#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Serialize, Deserialize)]
 #[serde(rename_all = "camelCase")]
 pub struct RpcTransactionConfig {
     pub encoding: Option<UiTransactionEncoding>,
@@ -307,7 +307,7 @@ impl EncodingConfig for RpcTransactionConfig {
     }
 }
 
-#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
+#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
 #[serde(untagged)]
 pub enum RpcBlocksConfigWrapper {
     EndSlotOnly(Option<Slot>),
@@ -323,7 +323,7 @@ impl RpcBlocksConfigWrapper {
     }
 }
 
-#[derive(Debug, Clone, Copy, Default, PartialEq, Serialize, Deserialize)]
+#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Serialize, Deserialize)]
 #[serde(rename_all = "camelCase")]
 pub struct RpcContextConfig {
     #[serde(flatten)]

+ 4 - 4
client/src/rpc_deprecated_config.rs

@@ -11,7 +11,7 @@ use {
     since = "1.7.0",
     note = "Please use RpcSignaturesForAddressConfig instead"
 )]
-#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
+#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
 #[serde(rename_all = "camelCase")]
 pub struct RpcGetConfirmedSignaturesForAddress2Config {
     pub before: Option<String>, // Signature as base-58 string
@@ -22,7 +22,7 @@ pub struct RpcGetConfirmedSignaturesForAddress2Config {
 }
 
 #[deprecated(since = "1.7.0", note = "Please use RpcBlockConfig instead")]
-#[derive(Debug, Clone, Copy, Default, PartialEq, Serialize, Deserialize)]
+#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Serialize, Deserialize)]
 #[serde(rename_all = "camelCase")]
 pub struct RpcConfirmedBlockConfig {
     pub encoding: Option<UiTransactionEncoding>,
@@ -77,7 +77,7 @@ impl From<RpcConfirmedBlockConfig> for RpcBlockConfig {
 }
 
 #[deprecated(since = "1.7.0", note = "Please use RpcTransactionConfig instead")]
-#[derive(Debug, Clone, Copy, Default, PartialEq, Serialize, Deserialize)]
+#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Serialize, Deserialize)]
 #[serde(rename_all = "camelCase")]
 pub struct RpcConfirmedTransactionConfig {
     pub encoding: Option<UiTransactionEncoding>,
@@ -105,7 +105,7 @@ impl From<RpcConfirmedTransactionConfig> for RpcTransactionConfig {
 }
 
 #[deprecated(since = "1.7.0", note = "Please use RpcBlocksConfigWrapper instead")]
-#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
+#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
 #[serde(untagged)]
 pub enum RpcConfirmedBlocksConfigWrapper {
     EndSlotOnly(Option<Slot>),

+ 1 - 1
client/src/rpc_filter.rs

@@ -87,7 +87,7 @@ impl RpcFilterType {
     }
 }
 
-#[derive(Error, PartialEq, Debug)]
+#[derive(Error, PartialEq, Eq, Debug)]
 pub enum RpcFilterError {
     #[error("encoded binary data should be less than 129 bytes")]
     DataTooLarge,

+ 15 - 15
client/src/rpc_response.rs

@@ -19,7 +19,7 @@ use {
 
 pub type RpcResult<T> = client_error::Result<Response<T>>;
 
-#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
+#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
 #[serde(rename_all = "camelCase")]
 pub struct RpcResponseContext {
     pub slot: Slot,
@@ -27,7 +27,7 @@ pub struct RpcResponseContext {
     pub api_version: Option<RpcApiVersion>,
 }
 
-#[derive(Debug, Clone, PartialEq)]
+#[derive(Debug, Clone, PartialEq, Eq)]
 pub struct RpcApiVersion(semver::Version);
 
 impl std::ops::Deref for RpcApiVersion {
@@ -168,21 +168,21 @@ pub struct RpcInflationRate {
     pub epoch: Epoch,
 }
 
-#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
+#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq)]
 #[serde(rename_all = "camelCase")]
 pub struct RpcKeyedAccount {
     pub pubkey: String,
     pub account: UiAccount,
 }
 
-#[derive(Serialize, Deserialize, Clone, Copy, Debug, PartialEq)]
+#[derive(Serialize, Deserialize, Clone, Copy, Debug, PartialEq, Eq)]
 pub struct SlotInfo {
     pub slot: Slot,
     pub parent: Slot,
     pub root: Slot,
 }
 
-#[derive(Serialize, Deserialize, Clone, Copy, Debug, PartialEq)]
+#[derive(Serialize, Deserialize, Clone, Copy, Debug, PartialEq, Eq)]
 #[serde(rename_all = "camelCase")]
 pub struct SlotTransactionStats {
     pub num_transaction_entries: u64,
@@ -290,14 +290,14 @@ pub struct RpcContactInfo {
 /// Map of leader base58 identity pubkeys to the slot indices relative to the first epoch slot
 pub type RpcLeaderSchedule = HashMap<String, Vec<usize>>;
 
-#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
+#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
 #[serde(rename_all = "camelCase")]
 pub struct RpcBlockProductionRange {
     pub first_slot: Slot,
     pub last_slot: Slot,
 }
 
-#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
+#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq)]
 #[serde(rename_all = "camelCase")]
 pub struct RpcBlockProduction {
     /// Map of leader base58 identity pubkeys to a tuple of `(number of leader slots, number of blocks produced)`
@@ -431,14 +431,14 @@ pub struct RpcStorageTurn {
     pub slot: Slot,
 }
 
-#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
+#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq)]
 #[serde(rename_all = "camelCase")]
 pub struct RpcAccountBalance {
     pub address: String,
     pub lamports: u64,
 }
 
-#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
+#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq)]
 #[serde(rename_all = "camelCase")]
 pub struct RpcSupply {
     pub total: u64,
@@ -447,7 +447,7 @@ pub struct RpcSupply {
     pub non_circulating_accounts: Vec<String>,
 }
 
-#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
+#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq)]
 #[serde(rename_all = "camelCase")]
 pub enum StakeActivationState {
     Activating,
@@ -456,7 +456,7 @@ pub enum StakeActivationState {
     Inactive,
 }
 
-#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
+#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq)]
 #[serde(rename_all = "camelCase")]
 pub struct RpcStakeActivation {
     pub state: StakeActivationState,
@@ -472,7 +472,7 @@ pub struct RpcTokenAccountBalance {
     pub amount: UiTokenAmount,
 }
 
-#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
+#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
 #[serde(rename_all = "camelCase")]
 pub struct RpcConfirmedTransactionStatusWithSignature {
     pub signature: String,
@@ -483,7 +483,7 @@ pub struct RpcConfirmedTransactionStatusWithSignature {
     pub confirmation_status: Option<TransactionConfirmationStatus>,
 }
 
-#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
+#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
 #[serde(rename_all = "camelCase")]
 pub struct RpcPerfSample {
     pub slot: Slot,
@@ -492,7 +492,7 @@ pub struct RpcPerfSample {
     pub sample_period_secs: u16,
 }
 
-#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
+#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
 #[serde(rename_all = "camelCase")]
 pub struct RpcInflationReward {
     pub epoch: Epoch,
@@ -539,7 +539,7 @@ impl From<ConfirmedTransactionStatusWithSignature> for RpcConfirmedTransactionSt
     }
 }
 
-#[derive(Serialize, Deserialize, Clone, Copy, Debug, PartialEq)]
+#[derive(Serialize, Deserialize, Clone, Copy, Debug, PartialEq, Eq)]
 pub struct RpcSnapshotSlotInfo {
     pub full: Slot,
     pub incremental: Option<Slot>,

+ 1 - 1
core/src/ancestor_hashes_service.rs

@@ -36,7 +36,7 @@ use {
     },
 };
 
-#[derive(Debug, PartialEq)]
+#[derive(Debug, PartialEq, Eq)]
 pub enum AncestorHashesReplayUpdate {
     Dead(Slot),
     DeadDuplicateConfirmed(Slot),

+ 1 - 1
core/src/banking_stage.rs

@@ -103,7 +103,7 @@ struct RecordTransactionsSummary {
     result: Result<(), PohRecorderError>,
 }
 
-#[derive(Clone, Debug, PartialEq)]
+#[derive(Clone, Debug, PartialEq, Eq)]
 pub enum CommitTransactionDetails {
     Committed { compute_units: u64 },
     NotCommitted,

+ 1 - 1
core/src/broadcast_stage.rs

@@ -64,7 +64,7 @@ pub enum BroadcastStageReturnType {
     ChannelDisconnected,
 }
 
-#[derive(PartialEq, Clone, Debug)]
+#[derive(PartialEq, Eq, Clone, Debug)]
 pub enum BroadcastStageType {
     Standard,
     FailEntryVerification,

+ 1 - 1
core/src/broadcast_stage/broadcast_duplicates_run.rs

@@ -16,7 +16,7 @@ use {
 pub const MINIMUM_DUPLICATE_SLOT: Slot = 20;
 pub const DUPLICATE_RATE: usize = 10;
 
-#[derive(PartialEq, Clone, Debug)]
+#[derive(PartialEq, Eq, Clone, Debug)]
 pub struct BroadcastDuplicatesConfig {
     /// Amount of stake (excluding the leader) to send different version of slots to.
     /// Note this is sampled from a list of stakes sorted least to greatest.

+ 9 - 9
core/src/cluster_slot_state_verifier.rs

@@ -14,7 +14,7 @@ pub(crate) type DuplicateSlotsToRepair = HashMap<Slot, Hash>;
 pub(crate) type EpochSlotsFrozenSlots = BTreeMap<Slot, Hash>;
 pub(crate) type GossipDuplicateConfirmedSlots = BTreeMap<Slot, Hash>;
 
-#[derive(PartialEq, Clone, Debug)]
+#[derive(PartialEq, Eq, Clone, Debug)]
 pub enum ClusterConfirmedHash {
     // Ordered from strongest confirmation to weakest. Stronger
     // confirmations take precedence over weaker ones.
@@ -22,7 +22,7 @@ pub enum ClusterConfirmedHash {
     EpochSlotsFrozen(Hash),
 }
 
-#[derive(PartialEq, Clone, Debug)]
+#[derive(PartialEq, Eq, Clone, Debug)]
 pub enum BankStatus {
     Frozen(Hash),
     Dead,
@@ -71,7 +71,7 @@ impl BankStatus {
     }
 }
 
-#[derive(PartialEq, Debug)]
+#[derive(PartialEq, Eq, Debug)]
 pub struct DeadState {
     // Keep fields private, forces construction
     // via constructor
@@ -106,7 +106,7 @@ impl DeadState {
     }
 }
 
-#[derive(PartialEq, Debug)]
+#[derive(PartialEq, Eq, Debug)]
 pub struct BankFrozenState {
     // Keep fields private, forces construction
     // via constructor
@@ -149,7 +149,7 @@ impl BankFrozenState {
     }
 }
 
-#[derive(PartialEq, Debug)]
+#[derive(PartialEq, Eq, Debug)]
 pub struct DuplicateConfirmedState {
     // Keep fields private, forces construction
     // via constructor
@@ -174,7 +174,7 @@ impl DuplicateConfirmedState {
     }
 }
 
-#[derive(PartialEq, Debug)]
+#[derive(PartialEq, Eq, Debug)]
 pub struct DuplicateState {
     // Keep fields private, forces construction
     // via constructor
@@ -211,7 +211,7 @@ impl DuplicateState {
     }
 }
 
-#[derive(PartialEq, Debug)]
+#[derive(PartialEq, Eq, Debug)]
 pub struct EpochSlotsFrozenState {
     // Keep fields private, forces construction
     // via constructor
@@ -255,7 +255,7 @@ impl EpochSlotsFrozenState {
     }
 }
 
-#[derive(PartialEq, Debug)]
+#[derive(PartialEq, Eq, Debug)]
 pub enum SlotStateUpdate {
     BankFrozen(BankFrozenState),
     DuplicateConfirmed(DuplicateConfirmedState),
@@ -280,7 +280,7 @@ impl SlotStateUpdate {
     }
 }
 
-#[derive(PartialEq, Debug)]
+#[derive(PartialEq, Eq, Debug)]
 pub enum ResultingStateChange {
     // Bank was frozen
     BankFrozen(Hash),

+ 1 - 1
core/src/consensus.rs

@@ -39,7 +39,7 @@ use {
     thiserror::Error,
 };
 
-#[derive(PartialEq, Clone, Debug, AbiExample)]
+#[derive(PartialEq, Eq, Clone, Debug, AbiExample)]
 pub enum SwitchForkDecision {
     SwitchProof(Hash),
     SameFork,

+ 2 - 2
core/src/duplicate_repair_status.rs

@@ -17,7 +17,7 @@ pub const ANCESTOR_HASH_REPAIR_SAMPLE_SIZE: usize = 21;
 const MINIMUM_ANCESTOR_AGREEMENT_SIZE: usize = (ANCESTOR_HASH_REPAIR_SAMPLE_SIZE + 1) / 2;
 const RETRY_INTERVAL_SECONDS: usize = 5;
 
-#[derive(Debug, PartialEq)]
+#[derive(Debug, PartialEq, Eq)]
 pub enum DuplicateAncestorDecision {
     InvalidSample,
     AncestorsAllMatch,
@@ -67,7 +67,7 @@ impl DuplicateAncestorDecision {
     }
 }
 
-#[derive(Debug, Default, Clone, PartialEq)]
+#[derive(Debug, Default, Clone, PartialEq, Eq)]
 pub struct DuplicateSlotRepairStatus {
     // Any ancestor slots that are either missing or are mismatched.
     // A mismatched ancestor slot is one that has been replayed (frozen)

+ 1 - 1
core/src/repair_weighted_traversal.rs

@@ -9,7 +9,7 @@ use {
     std::collections::{HashMap, HashSet},
 };
 
-#[derive(Debug, PartialEq)]
+#[derive(Debug, PartialEq, Eq)]
 enum Visit {
     Visited(Slot),
     Unvisited(Slot),

+ 1 - 1
core/src/replay_stage.rs

@@ -85,7 +85,7 @@ pub const DUPLICATE_THRESHOLD: f64 = 1.0 - SWITCH_FORK_THRESHOLD - DUPLICATE_LIV
 const MAX_VOTE_SIGNATURES: usize = 200;
 const MAX_VOTE_REFRESH_INTERVAL_MILLIS: usize = 5000;
 
-#[derive(PartialEq, Debug)]
+#[derive(PartialEq, Eq, Debug)]
 pub enum HeaviestForkFailures {
     LockedOut(u64),
     FailedThreshold(u64),

+ 1 - 1
core/src/tower1_7_14.rs

@@ -37,7 +37,7 @@ pub struct Tower1_7_14 {
 }
 
 #[frozen_abi(digest = "CxwFFxKfn6ez6wifDKr5WYr3eu2PsWUKdMYp3LX8Xj52")]
-#[derive(Default, Clone, Serialize, Deserialize, Debug, PartialEq, AbiExample)]
+#[derive(Default, Clone, Serialize, Deserialize, Debug, PartialEq, Eq, AbiExample)]
 pub struct SavedTower1_7_14 {
     pub(crate) signature: Signature,
     pub(crate) data: Vec<u8>,

+ 4 - 4
core/src/tower_storage.rs

@@ -14,7 +14,7 @@ use {
     },
 };
 
-#[derive(Clone, Serialize, Deserialize, Debug, PartialEq, AbiExample)]
+#[derive(Clone, Serialize, Deserialize, Debug, PartialEq, Eq, AbiExample)]
 pub enum SavedTowerVersions {
     V1_17_14(SavedTower1_7_14),
     Current(SavedTower),
@@ -76,7 +76,7 @@ impl From<SavedTower1_7_14> for SavedTowerVersions {
 }
 
 #[frozen_abi(digest = "Gaxfwvx5MArn52mKZQgzHmDCyn5YfCuTHvp5Et3rFfpp")]
-#[derive(Default, Clone, Serialize, Deserialize, Debug, PartialEq, AbiExample)]
+#[derive(Default, Clone, Serialize, Deserialize, Debug, PartialEq, Eq, AbiExample)]
 pub struct SavedTower {
     signature: Signature,
     data: Vec<u8>,
@@ -109,7 +109,7 @@ pub trait TowerStorage: Sync + Send {
     fn store(&self, saved_tower: &SavedTowerVersions) -> Result<()>;
 }
 
-#[derive(Debug, Default, Clone, PartialEq)]
+#[derive(Debug, Default, Clone, PartialEq, Eq)]
 pub struct NullTowerStorage {}
 
 impl TowerStorage for NullTowerStorage {
@@ -125,7 +125,7 @@ impl TowerStorage for NullTowerStorage {
     }
 }
 
-#[derive(Debug, Default, Clone, PartialEq)]
+#[derive(Debug, Default, Clone, PartialEq, Eq)]
 pub struct FileTowerStorage {
     pub tower_path: PathBuf,
 }

+ 2 - 2
core/src/validator.rs

@@ -251,7 +251,7 @@ impl ValidatorConfig {
 // `ValidatorStartProgress` contains status information that is surfaced to the node operator over
 // the admin RPC channel to help them to follow the general progress of node startup without
 // having to watch log messages.
-#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq)]
+#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq)]
 pub enum ValidatorStartProgress {
     Initializing, // Catch all, default state
     SearchingForRpcService,
@@ -1820,7 +1820,7 @@ fn initialize_rpc_transaction_history_services(
     }
 }
 
-#[derive(Debug, PartialEq)]
+#[derive(Debug, PartialEq, Eq)]
 enum ValidatorError {
     BadExpectedBankHash,
     NotEnoughLedgerData,

+ 3 - 3
dos/src/cli.rs

@@ -5,7 +5,7 @@ use {
     std::{net::SocketAddr, process::exit, str::FromStr},
 };
 
-#[derive(Parser, Debug, PartialEq)]
+#[derive(Parser, Debug, PartialEq, Eq)]
 #[clap(name = crate_name!(),
     version = crate_version!(),
     about = crate_description!(),
@@ -52,7 +52,7 @@ pub struct DosClientParameters {
     pub transaction_params: TransactionParams,
 }
 
-#[derive(Args, Serialize, Deserialize, Debug, Default, PartialEq)]
+#[derive(Args, Serialize, Deserialize, Debug, Default, PartialEq, Eq)]
 #[clap(rename_all = "kebab-case")]
 pub struct TransactionParams {
     #[clap(
@@ -119,7 +119,7 @@ pub enum DataType {
     Transaction,
 }
 
-#[derive(ArgEnum, Serialize, Deserialize, Debug, Clone, PartialEq)]
+#[derive(ArgEnum, Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
 pub enum TransactionType {
     Transfer,
     AccountCreation,

+ 1 - 1
entry/src/entry.rs

@@ -318,7 +318,7 @@ pub struct VerifyRecyclers {
     tx_offset_recycler: Recycler<sigverify::TxOffset>,
 }
 
-#[derive(PartialEq, Clone, Copy, Debug)]
+#[derive(PartialEq, Eq, Clone, Copy, Debug)]
 pub enum EntryVerificationStatus {
     Failure,
     Success,

+ 2 - 2
gossip/src/crds.rs

@@ -77,7 +77,7 @@ pub struct Crds {
     stats: Mutex<CrdsStats>,
 }
 
-#[derive(PartialEq, Debug)]
+#[derive(PartialEq, Eq, Debug)]
 pub enum CrdsError {
     InsertFailed,
     UnknownStakes,
@@ -106,7 +106,7 @@ pub(crate) struct CrdsStats {
 }
 
 /// This structure stores some local metadata associated with the CrdsValue
-#[derive(PartialEq, Debug, Clone)]
+#[derive(PartialEq, Eq, Debug, Clone)]
 pub struct VersionedCrdsValue {
     /// Ordinal index indicating insert order.
     ordinal: u64,

+ 1 - 1
gossip/src/crds_gossip_error.rs

@@ -1,4 +1,4 @@
-#[derive(PartialEq, Debug)]
+#[derive(PartialEq, Eq, Debug)]
 pub enum CrdsGossipError {
     NoPeers,
     PushMessageTimeout,

+ 1 - 1
gossip/src/crds_gossip_pull.rs

@@ -56,7 +56,7 @@ const PULL_ACTIVE_TIMEOUT_MS: u64 = 60_000;
 pub const FALSE_RATE: f64 = 0.1f64;
 pub const KEYS: f64 = 8f64;
 
-#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, AbiExample)]
+#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, AbiExample)]
 pub struct CrdsFilter {
     pub filter: Bloom<Hash>,
     mask: u64,

+ 9 - 9
gossip/src/crds_value.rs

@@ -39,7 +39,7 @@ pub type EpochSlotsIndex = u8;
 pub const MAX_EPOCH_SLOTS: EpochSlotsIndex = 255;
 
 /// CrdsValue that is replicated across the cluster
-#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, AbiExample)]
+#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, AbiExample)]
 pub struct CrdsValue {
     pub signature: Signature,
     pub data: CrdsData,
@@ -79,7 +79,7 @@ impl Signable for CrdsValue {
 /// * Merge Strategy - Latest wallclock is picked
 /// * LowestSlot index is deprecated
 #[allow(clippy::large_enum_variant)]
-#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, AbiExample, AbiEnumVisitor)]
+#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, AbiExample, AbiEnumVisitor)]
 pub enum CrdsData {
     ContactInfo(ContactInfo),
     Vote(VoteIndex, Vote),
@@ -161,7 +161,7 @@ impl CrdsData {
     }
 }
 
-#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, AbiExample)]
+#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, AbiExample)]
 pub struct SnapshotHashes {
     pub from: Pubkey,
     pub hashes: Vec<(Slot, Hash)>,
@@ -207,7 +207,7 @@ impl SnapshotHashes {
     }
 }
 
-#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, AbiExample)]
+#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, AbiExample)]
 pub struct IncrementalSnapshotHashes {
     pub from: Pubkey,
     pub base: (Slot, Hash),
@@ -233,7 +233,7 @@ impl Sanitize for IncrementalSnapshotHashes {
     }
 }
 
-#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, AbiExample)]
+#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, AbiExample)]
 pub struct LowestSlot {
     pub from: Pubkey,
     root: Slot, //deprecated
@@ -287,7 +287,7 @@ impl Sanitize for LowestSlot {
     }
 }
 
-#[derive(Clone, Debug, PartialEq, AbiExample, Serialize)]
+#[derive(Clone, Debug, PartialEq, Eq, AbiExample, Serialize)]
 pub struct Vote {
     pub(crate) from: Pubkey,
     transaction: Transaction,
@@ -354,7 +354,7 @@ impl<'de> Deserialize<'de> for Vote {
     }
 }
 
-#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, AbiExample)]
+#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, AbiExample)]
 pub struct LegacyVersion {
     pub from: Pubkey,
     pub wallclock: u64,
@@ -369,7 +369,7 @@ impl Sanitize for LegacyVersion {
     }
 }
 
-#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, AbiExample)]
+#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, AbiExample)]
 pub struct Version {
     pub from: Pubkey,
     pub wallclock: u64,
@@ -409,7 +409,7 @@ impl Version {
     }
 }
 
-#[derive(Clone, Debug, PartialEq, AbiExample, Deserialize, Serialize)]
+#[derive(Clone, Debug, PartialEq, Eq, AbiExample, Deserialize, Serialize)]
 pub struct NodeInstance {
     from: Pubkey,
     wallclock: u64,

+ 2 - 2
gossip/src/deprecated.rs

@@ -1,6 +1,6 @@
 use solana_sdk::clock::Slot;
 
-#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, AbiExample, AbiEnumVisitor)]
+#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, AbiExample, AbiEnumVisitor)]
 enum CompressionType {
     Uncompressed,
     GZip,
@@ -13,7 +13,7 @@ impl Default for CompressionType {
     }
 }
 
-#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq, AbiExample)]
+#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq, Eq, AbiExample)]
 pub(crate) struct EpochIncompleteSlots {
     first: Slot,
     compression: CompressionType,

+ 1 - 1
gossip/src/duplicate_shred.rs

@@ -27,7 +27,7 @@ pub(crate) const MAX_DUPLICATE_SHREDS: DuplicateShredIndex = 512;
 pub trait LeaderScheduleFn: FnOnce(Slot) -> Option<Pubkey> {}
 impl<F> LeaderScheduleFn for F where F: FnOnce(Slot) -> Option<Pubkey> {}
 
-#[derive(Clone, Debug, PartialEq, AbiExample, Deserialize, Serialize)]
+#[derive(Clone, Debug, PartialEq, Eq, AbiExample, Deserialize, Serialize)]
 pub struct DuplicateShred {
     pub(crate) from: Pubkey,
     pub(crate) wallclock: u64,

+ 5 - 5
gossip/src/epoch_slots.rs

@@ -14,7 +14,7 @@ use {
 };
 
 const MAX_SLOTS_PER_ENTRY: usize = 2048 * 8;
-#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, AbiExample)]
+#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, AbiExample)]
 pub struct Uncompressed {
     pub first_slot: Slot,
     pub num: usize,
@@ -42,7 +42,7 @@ impl Sanitize for Uncompressed {
     }
 }
 
-#[derive(Deserialize, Serialize, Clone, Debug, PartialEq, AbiExample)]
+#[derive(Deserialize, Serialize, Clone, Debug, PartialEq, Eq, AbiExample)]
 pub struct Flate2 {
     pub first_slot: Slot,
     pub num: usize,
@@ -61,7 +61,7 @@ impl Sanitize for Flate2 {
     }
 }
 
-#[derive(Debug, PartialEq)]
+#[derive(Debug, PartialEq, Eq)]
 pub enum Error {
     CompressError,
     DecompressError,
@@ -156,7 +156,7 @@ impl Uncompressed {
     }
 }
 
-#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, AbiExample, AbiEnumVisitor)]
+#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, AbiExample, AbiEnumVisitor)]
 pub enum CompressedSlots {
     Flate2(Flate2),
     Uncompressed(Uncompressed),
@@ -225,7 +225,7 @@ impl CompressedSlots {
     }
 }
 
-#[derive(Serialize, Deserialize, Clone, Default, PartialEq, AbiExample)]
+#[derive(Serialize, Deserialize, Clone, Default, PartialEq, Eq, AbiExample)]
 pub struct EpochSlots {
     pub from: Pubkey,
     pub slots: Vec<CompressedSlots>,

+ 2 - 2
install/src/config.rs

@@ -9,13 +9,13 @@ use {
     },
 };
 
-#[derive(Serialize, Deserialize, Debug, PartialEq)]
+#[derive(Serialize, Deserialize, Debug, PartialEq, Eq)]
 pub enum ExplicitRelease {
     Semver(String),
     Channel(String),
 }
 
-#[derive(Serialize, Deserialize, Default, Debug, PartialEq)]
+#[derive(Serialize, Deserialize, Default, Debug, PartialEq, Eq)]
 pub struct Config {
     pub json_rpc_url: String,
     pub update_manifest_pubkey: Pubkey,

+ 2 - 2
install/src/update_manifest.rs

@@ -10,7 +10,7 @@ use {
 };
 
 /// Information required to download and apply a given update
-#[derive(Serialize, Deserialize, Default, Clone, Debug, PartialEq)]
+#[derive(Serialize, Deserialize, Default, Clone, Debug, PartialEq, Eq)]
 pub struct UpdateManifest {
     pub timestamp_secs: u64, // When the release was deployed in seconds since UNIX EPOCH
     pub download_url: String, // Download URL to the release tar.bz2
@@ -18,7 +18,7 @@ pub struct UpdateManifest {
 }
 
 /// Data of an Update Manifest program Account.
-#[derive(Serialize, Deserialize, Default, Debug, PartialEq)]
+#[derive(Serialize, Deserialize, Default, Debug, PartialEq, Eq)]
 pub struct SignedUpdateManifest {
     pub manifest: UpdateManifest,
     pub manifest_signature: Signature,

+ 1 - 1
ledger-tool/src/main.rs

@@ -89,7 +89,7 @@ use {
 mod bigtable;
 mod ledger_path;
 
-#[derive(PartialEq)]
+#[derive(PartialEq, Eq)]
 enum LedgerOutputMethod {
     Print,
     Json,

+ 1 - 1
ledger/src/block_error.rs

@@ -1,6 +1,6 @@
 use thiserror::Error;
 
-#[derive(Error, Debug, PartialEq)]
+#[derive(Error, Debug, PartialEq, Eq)]
 pub enum BlockError {
     /// Block did not have enough ticks was not marked full
     /// and no shred with is_last was seen.

+ 1 - 1
ledger/src/blockstore_db.rs

@@ -236,7 +236,7 @@ pub mod columns {
     // - Account for column in `analyze_storage()` in ledger-tool/src/main.rs
 }
 
-#[derive(Clone, Debug, PartialEq)]
+#[derive(Clone, Debug, PartialEq, Eq)]
 pub enum AccessType {
     /// Primary (read/write) access; only one process can have Primary access.
     Primary,

+ 11 - 11
ledger/src/blockstore_meta.rs

@@ -65,7 +65,7 @@ mod serde_compat {
     }
 }
 
-#[derive(Clone, Debug, Default, Deserialize, Serialize, PartialEq)]
+#[derive(Clone, Debug, Default, Deserialize, Serialize, PartialEq, Eq)]
 /// Index recording presence/absence of shreds
 pub struct Index {
     pub slot: Slot,
@@ -73,7 +73,7 @@ pub struct Index {
     coding: ShredIndex,
 }
 
-#[derive(Clone, Debug, Default, Deserialize, Serialize, PartialEq)]
+#[derive(Clone, Debug, Default, Deserialize, Serialize, PartialEq, Eq)]
 pub struct ShredIndex {
     /// Map representing presence/absence of shreds
     index: BTreeSet<u64>,
@@ -107,14 +107,14 @@ pub struct DuplicateSlotProof {
     pub shred2: Vec<u8>,
 }
 
-#[derive(Debug, PartialEq)]
+#[derive(Debug, PartialEq, Eq)]
 pub enum ErasureMetaStatus {
     CanRecover,
     DataFull,
     StillNeed(usize),
 }
 
-#[derive(Deserialize, Serialize, Debug, PartialEq)]
+#[derive(Deserialize, Serialize, Debug, PartialEq, Eq)]
 pub enum FrozenHashVersioned {
     Current(FrozenHashStatus),
 }
@@ -135,7 +135,7 @@ impl FrozenHashVersioned {
     }
 }
 
-#[derive(Deserialize, Serialize, Debug, PartialEq)]
+#[derive(Deserialize, Serialize, Debug, PartialEq, Eq)]
 pub struct FrozenHashStatus {
     pub frozen_hash: Hash,
     pub is_duplicate_confirmed: bool,
@@ -307,36 +307,36 @@ impl DuplicateSlotProof {
     }
 }
 
-#[derive(Debug, Default, Deserialize, Serialize, PartialEq)]
+#[derive(Debug, Default, Deserialize, Serialize, PartialEq, Eq)]
 pub struct TransactionStatusIndexMeta {
     pub max_slot: Slot,
     pub frozen: bool,
 }
 
-#[derive(Debug, Default, Deserialize, Serialize, PartialEq)]
+#[derive(Debug, Default, Deserialize, Serialize, PartialEq, Eq)]
 pub struct AddressSignatureMeta {
     pub writeable: bool,
 }
 
-#[derive(Clone, Debug, Default, Deserialize, Serialize, PartialEq)]
+#[derive(Clone, Debug, Default, Deserialize, Serialize, PartialEq, Eq)]
 pub struct PerfSample {
     pub num_transactions: u64,
     pub num_slots: u64,
     pub sample_period_secs: u16,
 }
 
-#[derive(Clone, Debug, Default, Deserialize, Serialize, PartialEq)]
+#[derive(Clone, Debug, Default, Deserialize, Serialize, PartialEq, Eq)]
 pub struct ProgramCost {
     pub cost: u64,
 }
 
-#[derive(Clone, Debug, Default, Deserialize, Serialize, PartialEq)]
+#[derive(Clone, Debug, Default, Deserialize, Serialize, PartialEq, Eq)]
 pub struct OptimisticSlotMetaV0 {
     pub hash: Hash,
     pub timestamp: UnixTimestamp,
 }
 
-#[derive(Deserialize, Serialize, Debug, PartialEq)]
+#[derive(Deserialize, Serialize, Debug, PartialEq, Eq)]
 pub enum OptimisticSlotMetaVersioned {
     V0(OptimisticSlotMetaV0),
 }

+ 1 - 1
ledger/src/leader_schedule.rs

@@ -13,7 +13,7 @@ pub struct FixedSchedule {
 }
 
 /// Stake-weighted leader schedule for one epoch.
-#[derive(Debug, Default, PartialEq)]
+#[derive(Debug, Default, PartialEq, Eq)]
 pub struct LeaderSchedule {
     slot_leaders: Vec<Pubkey>,
     // Inverted index from pubkeys to indices where they are the leader.

+ 4 - 4
ledger/src/shred.rs

@@ -173,7 +173,7 @@ pub enum ShredType {
 }
 
 /// A common header that is present in data and code shred headers
-#[derive(Clone, Copy, Debug, PartialEq, Deserialize, Serialize)]
+#[derive(Clone, Copy, Debug, PartialEq, Eq, Deserialize, Serialize)]
 struct ShredCommonHeader {
     signature: Signature,
     shred_type: ShredType,
@@ -184,7 +184,7 @@ struct ShredCommonHeader {
 }
 
 /// The data shred header has parent offset and flags
-#[derive(Clone, Copy, Debug, PartialEq, Deserialize, Serialize)]
+#[derive(Clone, Copy, Debug, PartialEq, Eq, Deserialize, Serialize)]
 struct DataShredHeader {
     parent_offset: u16,
     flags: ShredFlags,
@@ -192,14 +192,14 @@ struct DataShredHeader {
 }
 
 /// The coding shred header has FEC information
-#[derive(Clone, Copy, Debug, PartialEq, Deserialize, Serialize)]
+#[derive(Clone, Copy, Debug, PartialEq, Eq, Deserialize, Serialize)]
 struct CodingShredHeader {
     num_data_shreds: u16,
     num_coding_shreds: u16,
     position: u16,
 }
 
-#[derive(Clone, Debug, PartialEq)]
+#[derive(Clone, Debug, PartialEq, Eq)]
 pub enum Shred {
     ShredCode(ShredCode),
     ShredData(ShredData),

+ 2 - 2
ledger/src/shred/legacy.rs

@@ -23,14 +23,14 @@ const DATA_SHRED_SIZE_RANGE: RangeInclusive<usize> =
 const_assert_eq!(ENCODED_PAYLOAD_SIZE, 1139);
 const ENCODED_PAYLOAD_SIZE: usize = SHRED_PAYLOAD_SIZE - SIZE_OF_CODING_SHRED_HEADERS;
 
-#[derive(Clone, Debug, PartialEq)]
+#[derive(Clone, Debug, PartialEq, Eq)]
 pub struct ShredData {
     common_header: ShredCommonHeader,
     data_header: DataShredHeader,
     payload: Vec<u8>,
 }
 
-#[derive(Clone, Debug, PartialEq)]
+#[derive(Clone, Debug, PartialEq, Eq)]
 pub struct ShredCode {
     common_header: ShredCommonHeader,
     coding_header: CodingShredHeader,

+ 2 - 2
merkle-tree/src/merkle_tree.rs

@@ -24,7 +24,7 @@ pub struct MerkleTree {
     nodes: Vec<Hash>,
 }
 
-#[derive(Debug, PartialEq)]
+#[derive(Debug, PartialEq, Eq)]
 pub struct ProofEntry<'a>(&'a Hash, Option<&'a Hash>, Option<&'a Hash>);
 
 impl<'a> ProofEntry<'a> {
@@ -38,7 +38,7 @@ impl<'a> ProofEntry<'a> {
     }
 }
 
-#[derive(Debug, Default, PartialEq)]
+#[derive(Debug, Default, PartialEq, Eq)]
 pub struct Proof<'a>(Vec<ProofEntry<'a>>);
 
 impl<'a> Proof<'a> {

+ 1 - 1
metrics/src/poh_timing_point.rs

@@ -14,7 +14,7 @@ pub type PohTimingReceiver = Receiver<SlotPohTimingInfo>;
 pub type PohTimingSender = Sender<SlotPohTimingInfo>;
 
 /// PohTimingPoint. Each TimingPoint is annotated with a timestamp in milliseconds.
-#[derive(Debug, Clone, PartialEq)]
+#[derive(Debug, Clone, PartialEq, Eq)]
 pub enum PohTimingPoint {
     PohSlotStart(u64),
     PohSlotEnd(u64),

+ 1 - 1
net-utils/src/ip_echo_server.rs

@@ -28,7 +28,7 @@ pub(crate) struct IpEchoServerMessage {
     udp_ports: [u16; MAX_PORT_COUNT_PER_MESSAGE], // Fixed size list of ports to avoid vec serde
 }
 
-#[derive(Debug, PartialEq, Serialize, Deserialize)]
+#[derive(Debug, PartialEq, Eq, Serialize, Deserialize)]
 pub struct IpEchoServerResponse {
     // Public IP address of request echoed back to the node.
     pub(crate) address: IpAddr,

+ 1 - 1
perf/src/sigverify.rs

@@ -77,7 +77,7 @@ impl PacketOffsets {
     }
 }
 
-#[derive(Debug, PartialEq)]
+#[derive(Debug, PartialEq, Eq)]
 pub enum PacketError {
     InvalidLen,
     InvalidPubkeyLen,

+ 1 - 1
poh/src/poh_recorder.rs

@@ -193,7 +193,7 @@ pub struct WorkingBank {
     pub max_tick_height: u64,
 }
 
-#[derive(Debug, PartialEq)]
+#[derive(Debug, PartialEq, Eq)]
 pub enum PohLeaderStatus {
     NotReached,
     Reached { poh_slot: Slot, parent_slot: Slot },

+ 1 - 1
program-runtime/src/compute_budget.rs

@@ -22,7 +22,7 @@ impl ::solana_frozen_abi::abi_example::AbiExample for ComputeBudget {
     }
 }
 
-#[derive(Clone, Copy, Debug, PartialEq)]
+#[derive(Clone, Copy, Debug, PartialEq, Eq)]
 pub struct ComputeBudget {
     /// Number of compute units that a transaction or individual instruction is
     /// allowed to consume. Compute units are consumed by program execution,

+ 1 - 1
program-runtime/src/prioritization_fee.rs

@@ -8,7 +8,7 @@ pub enum PrioritizationFeeType {
     Deprecated(u64),
 }
 
-#[derive(Default, Debug, PartialEq)]
+#[derive(Default, Debug, PartialEq, Eq)]
 pub struct PrioritizationFeeDetails {
     fee: u64,
     priority: u64,

+ 2 - 2
program-runtime/src/timings.rs

@@ -8,7 +8,7 @@ use {
     },
 };
 
-#[derive(Default, Debug, PartialEq)]
+#[derive(Default, Debug, PartialEq, Eq)]
 pub struct ProgramTiming {
     pub accumulated_us: u64,
     pub accumulated_units: u64,
@@ -153,7 +153,7 @@ impl ExecuteAccessoryTimings {
     }
 }
 
-#[derive(Default, Debug, PartialEq)]
+#[derive(Default, Debug, PartialEq, Eq)]
 pub struct ExecuteDetailsTimings {
     pub serialize_us: u64,
     pub create_vm_us: u64,

+ 1 - 1
program-test/src/lib.rs

@@ -69,7 +69,7 @@ pub mod programs;
 extern crate solana_bpf_loader_program;
 
 /// Errors from the program test environment
-#[derive(Error, Debug, PartialEq)]
+#[derive(Error, Debug, PartialEq, Eq)]
 pub enum ProgramTestError {
     /// The chosen warp slot is not in the future, so warp is not performed
     #[error("Warp slot not in the future")]

+ 4 - 4
programs/address-lookup-table/src/state.rs

@@ -18,7 +18,7 @@ pub const LOOKUP_TABLE_MAX_ADDRESSES: usize = 256;
 pub const LOOKUP_TABLE_META_SIZE: usize = 56;
 
 /// Program account states
-#[derive(Debug, Serialize, Deserialize, PartialEq, Clone, AbiExample, AbiEnumVisitor)]
+#[derive(Debug, Serialize, Deserialize, PartialEq, Eq, Clone, AbiExample, AbiEnumVisitor)]
 #[allow(clippy::large_enum_variant)]
 pub enum ProgramState {
     /// Account is not initialized.
@@ -28,7 +28,7 @@ pub enum ProgramState {
 }
 
 /// Activation status of a lookup table
-#[derive(Debug, PartialEq, Clone)]
+#[derive(Debug, PartialEq, Eq, Clone)]
 pub enum LookupTableStatus {
     Activated,
     Deactivating { remaining_blocks: usize },
@@ -36,7 +36,7 @@ pub enum LookupTableStatus {
 }
 
 /// Address lookup table metadata
-#[derive(Debug, Serialize, Deserialize, PartialEq, Clone, AbiExample)]
+#[derive(Debug, Serialize, Deserialize, PartialEq, Eq, Clone, AbiExample)]
 pub struct LookupTableMeta {
     /// Lookup tables cannot be closed until the deactivation slot is
     /// no longer "recent" (not accessible in the `SlotHashes` sysvar).
@@ -112,7 +112,7 @@ impl LookupTableMeta {
     }
 }
 
-#[derive(Debug, PartialEq, Clone, AbiExample)]
+#[derive(Debug, PartialEq, Eq, Clone, AbiExample)]
 pub struct AddressLookupTable<'a> {
     pub meta: LookupTableMeta,
     pub addresses: Cow<'a, [Pubkey]>,

+ 1 - 1
programs/bpf_loader/src/lib.rs

@@ -68,7 +68,7 @@ solana_sdk::declare_builtin!(
 );
 
 /// Errors returned by functions the BPF Loader registers with the VM
-#[derive(Debug, Error, PartialEq)]
+#[derive(Debug, Error, PartialEq, Eq)]
 pub enum BpfError {
     #[error("{0}")]
     VerifierError(#[from] VerifierError),

+ 1 - 1
programs/bpf_loader/src/syscalls.rs

@@ -62,7 +62,7 @@ use {
 pub const MAX_SIGNERS: usize = 16;
 
 /// Error definitions
-#[derive(Debug, ThisError, PartialEq)]
+#[derive(Debug, ThisError, PartialEq, Eq)]
 pub enum SyscallError {
     #[error("{0}: {1:?}")]
     InvalidString(Utf8Error, Vec<u8>),

+ 1 - 1
programs/config/src/config_processor.rs

@@ -174,7 +174,7 @@ mod tests {
         )
     }
 
-    #[derive(Serialize, Deserialize, Debug, PartialEq)]
+    #[derive(Serialize, Deserialize, Debug, PartialEq, Eq)]
     struct MyConfig {
         pub item: u64,
     }

+ 3 - 3
programs/stake/src/stake_state.rs

@@ -153,7 +153,7 @@ pub(crate) fn new_stake(
 ///  and the total points over which those lamports
 ///  are to be distributed
 //  basically read as rewards/points, but in integers instead of as an f64
-#[derive(Clone, Debug, PartialEq)]
+#[derive(Clone, Debug, PartialEq, Eq)]
 pub struct PointValue {
     pub rewards: u64, // lamports to split
     pub points: u128, // over these points
@@ -216,7 +216,7 @@ fn calculate_stake_points(
     .points
 }
 
-#[derive(Debug, PartialEq)]
+#[derive(Debug, PartialEq, Eq)]
 struct CalculatedStakePoints {
     points: u128,
     new_credits_observed: u64,
@@ -329,7 +329,7 @@ fn calculate_stake_points_and_credits(
     }
 }
 
-#[derive(Debug, PartialEq)]
+#[derive(Debug, PartialEq, Eq)]
 struct CalculatedStakeRewards {
     staker_rewards: u64,
     voter_rewards: u64,

+ 1 - 1
programs/vote/src/vote_error.rs

@@ -8,7 +8,7 @@ use {
 };
 
 /// Reasons the vote might have had an error
-#[derive(Error, Debug, Clone, PartialEq, FromPrimitive, ToPrimitive)]
+#[derive(Error, Debug, Clone, PartialEq, Eq, FromPrimitive, ToPrimitive)]
 pub enum VoteError {
     #[error("vote already recorded or not in slot hashes history")]
     VoteTooOld,

+ 1 - 1
programs/vote/src/vote_state/mod.rs

@@ -41,7 +41,7 @@ pub const MAX_EPOCH_CREDITS_HISTORY: usize = 64;
 const DEFAULT_PRIOR_VOTERS_OFFSET: usize = 82;
 
 #[frozen_abi(digest = "6LBwH5w3WyAWZhsM3KTG9QZP7nYBhcC61K33kHR6gMAD")]
-#[derive(Debug, PartialEq, Clone, Serialize, Deserialize, AbiEnumVisitor, AbiExample)]
+#[derive(Debug, PartialEq, Eq, Clone, Serialize, Deserialize, AbiEnumVisitor, AbiExample)]
 pub enum VoteTransaction {
     Vote(Vote),
     VoteStateUpdate(VoteStateUpdate),

+ 1 - 1
remote-wallet/src/ledger_error.rs

@@ -1,6 +1,6 @@
 use {num_derive::FromPrimitive, thiserror::Error};
 
-#[derive(Error, Debug, Clone, FromPrimitive, PartialEq)]
+#[derive(Error, Debug, Clone, FromPrimitive, PartialEq, Eq)]
 pub enum LedgerError {
     #[error("Solana app not open on Ledger device")]
     NoAppResponse = 0x6700,

+ 4 - 4
remote-wallet/src/locator.rs

@@ -8,7 +8,7 @@ use {
     uriparse::{URIReference, URIReferenceBuilder, URIReferenceError},
 };
 
-#[derive(Clone, Copy, Debug, PartialEq)]
+#[derive(Clone, Copy, Debug, PartialEq, Eq)]
 pub enum Manufacturer {
     Unknown,
     Ledger,
@@ -23,7 +23,7 @@ impl Default for Manufacturer {
 const MANUFACTURER_UNKNOWN: &str = "unknown";
 const MANUFACTURER_LEDGER: &str = "ledger";
 
-#[derive(Clone, Debug, Error, PartialEq)]
+#[derive(Clone, Debug, Error, PartialEq, Eq)]
 #[error("not a manufacturer")]
 pub struct ManufacturerError;
 
@@ -67,7 +67,7 @@ impl std::fmt::Display for Manufacturer {
     }
 }
 
-#[derive(Clone, Debug, Error, PartialEq)]
+#[derive(Clone, Debug, Error, PartialEq, Eq)]
 pub enum LocatorError {
     #[error(transparent)]
     ManufacturerError(#[from] ManufacturerError),
@@ -87,7 +87,7 @@ impl From<Infallible> for LocatorError {
     }
 }
 
-#[derive(Debug, PartialEq)]
+#[derive(Debug, PartialEq, Eq)]
 pub struct Locator {
     pub manufacturer: Manufacturer,
     pub pubkey: Option<Pubkey>,

+ 1 - 1
rpc/src/rpc_health.rs

@@ -10,7 +10,7 @@ use {
     },
 };
 
-#[derive(PartialEq, Clone, Copy, Debug)]
+#[derive(PartialEq, Eq, Clone, Copy, Debug)]
 pub enum RpcHealthStatus {
     Ok,
     Behind { num_slots: Slot }, // Validator is behind its known validators

+ 1 - 1
rpc/src/rpc_subscriptions.rs

@@ -199,7 +199,7 @@ impl<T> From<RpcNotificationResponse<T>> for RpcResponse<T> {
     }
 }
 
-#[derive(Debug, Clone, PartialEq)]
+#[derive(Debug, Clone, PartialEq, Eq)]
 struct RpcNotificationContext {
     slot: Slot,
 }

+ 1 - 1
runtime/src/account_info.rs

@@ -60,7 +60,7 @@ impl StorageLocation {
 /// AppendVecs store accounts aligned to u64, so offset is always a multiple of 8 (sizeof(u64))
 pub type OffsetReduced = u32;
 
-#[derive(Default, Debug, PartialEq, Clone, Copy)]
+#[derive(Default, Debug, PartialEq, Eq, Clone, Copy)]
 pub struct AccountInfo {
     /// index identifying the append storage
     store_id: AppendVecId,

+ 1 - 1
runtime/src/account_rent_state.rs

@@ -9,7 +9,7 @@ use {
     },
 };
 
-#[derive(Debug, PartialEq)]
+#[derive(Debug, PartialEq, Eq)]
 pub(crate) enum RentState {
     /// account.lamports == 0
     Uninitialized,

+ 1 - 1
runtime/src/accounts.rs

@@ -119,7 +119,7 @@ pub struct Accounts {
 // for the load instructions
 pub type TransactionRent = u64;
 pub type TransactionProgramIndices = Vec<Vec<usize>>;
-#[derive(PartialEq, Debug, Clone)]
+#[derive(PartialEq, Eq, Debug, Clone)]
 pub struct LoadedTransaction {
     pub accounts: Vec<TransactionAccount>,
     pub program_indices: TransactionProgramIndices,

+ 4 - 4
runtime/src/accounts_db.rs

@@ -266,7 +266,7 @@ struct GenerateIndexTimings {
     pub accounts_data_len_dedup_time_us: u64,
 }
 
-#[derive(Default, Debug, PartialEq)]
+#[derive(Default, Debug, PartialEq, Eq)]
 struct StorageSizeAndCount {
     pub stored_size: usize,
     pub count: usize,
@@ -407,7 +407,7 @@ impl Versioned for (u64, AccountInfo) {
 // Slower fallback code path will be taken if the fast path has failed over the retry
 // threshold, regardless of these hints. Also, load cannot fail not-deterministically
 // even under very rare circumstances, unlike previously did allow.
-#[derive(Clone, Copy, Debug, PartialEq)]
+#[derive(Clone, Copy, Debug, PartialEq, Eq)]
 pub enum LoadHint {
     // Caller hints that it's loading transactions for a block which is
     // descended from the current root, and at the tip of its fork.
@@ -870,7 +870,7 @@ pub fn get_temp_accounts_paths(count: u32) -> IoResult<(Vec<TempDir>, Vec<PathBu
     Ok((temp_dirs, paths))
 }
 
-#[derive(Clone, Default, Debug, Serialize, Deserialize, PartialEq, AbiExample)]
+#[derive(Clone, Default, Debug, Serialize, Deserialize, PartialEq, Eq, AbiExample)]
 pub struct BankHashStats {
     pub num_updated_accounts: u64,
     pub num_removed_accounts: u64,
@@ -906,7 +906,7 @@ impl BankHashStats {
     }
 }
 
-#[derive(Clone, Default, Debug, Serialize, Deserialize, PartialEq, AbiExample)]
+#[derive(Clone, Default, Debug, Serialize, Deserialize, PartialEq, Eq, AbiExample)]
 pub struct BankHashInfo {
     pub hash: Hash,
     pub snapshot_hash: Hash,

+ 2 - 2
runtime/src/accounts_hash.rs

@@ -225,7 +225,7 @@ impl HashStats {
     }
 }
 
-#[derive(Default, Debug, PartialEq, Clone)]
+#[derive(Default, Debug, PartialEq, Eq, Clone)]
 pub struct CalculateHashIntermediate {
     pub hash: Hash,
     pub lamports: u64,
@@ -242,7 +242,7 @@ impl CalculateHashIntermediate {
     }
 }
 
-#[derive(Default, Debug, PartialEq)]
+#[derive(Default, Debug, PartialEq, Eq)]
 pub struct CumulativeOffset {
     pub index: Vec<usize>,
     pub start_offset: usize,

+ 1 - 1
runtime/src/accounts_index.rs

@@ -124,7 +124,7 @@ pub trait IndexValue:
 {
 }
 
-#[derive(Error, Debug, PartialEq)]
+#[derive(Error, Debug, PartialEq, Eq)]
 pub enum ScanError {
     #[error("Node detected it replayed bad version of slot {slot:?} with id {bank_id:?}, thus the scan on said slot was aborted")]
     SlotRemoved { slot: Slot, bank_id: BankId },

+ 1 - 1
runtime/src/ancient_append_vecs.rs

@@ -13,7 +13,7 @@ use {
 
 /// a set of accounts need to be stored.
 /// If there are too many to fit in 'Primary', the rest are put in 'Overflow'
-#[derive(Copy, Clone, Debug, PartialEq)]
+#[derive(Copy, Clone, Debug, PartialEq, Eq)]
 pub enum StorageSelector {
     Primary,
     Overflow,

+ 2 - 2
runtime/src/append_vec.rs

@@ -46,7 +46,7 @@ pub type StoredMetaWriteVersion = u64;
 /// Meta contains enough context to recover the index from storage itself
 /// This struct will be backed by mmaped and snapshotted data files.
 /// So the data layout must be stable and consistent across the entire cluster!
-#[derive(Clone, PartialEq, Debug)]
+#[derive(Clone, PartialEq, Eq, Debug)]
 pub struct StoredMeta {
     /// global write version
     pub write_version: StoredMetaWriteVersion,
@@ -91,7 +91,7 @@ impl<'a, T: ReadableAccount> From<Option<&'a T>> for AccountMeta {
 
 /// References to account data stored elsewhere. Getting an `Account` requires cloning
 /// (see `StoredAccountMeta::clone_account()`).
-#[derive(PartialEq, Debug)]
+#[derive(PartialEq, Eq, Debug)]
 pub struct StoredAccountMeta<'a> {
     pub meta: &'a StoredMeta,
     /// account data

+ 9 - 9
runtime/src/bank.rs

@@ -190,7 +190,7 @@ pub const MAX_LEADER_SCHEDULE_STAKES: Epoch = 5;
 
 pub type Rewrites = RwLock<HashMap<Pubkey, Hash>>;
 
-#[derive(Clone, Debug, PartialEq)]
+#[derive(Clone, Debug, PartialEq, Eq)]
 pub struct RentDebit {
     rent_collected: u64,
     post_balance: u64,
@@ -210,7 +210,7 @@ impl RentDebit {
     }
 }
 
-#[derive(Clone, Debug, Default, PartialEq)]
+#[derive(Clone, Debug, Default, PartialEq, Eq)]
 pub struct RentDebits(HashMap<Pubkey, RentDebit>);
 impl RentDebits {
     fn get_account_rent_debit(&self, address: &Pubkey) -> u64 {
@@ -765,7 +765,7 @@ pub fn inner_instructions_list_from_instruction_trace(
 /// A list of log messages emitted during a transaction
 pub type TransactionLogMessages = Vec<String>;
 
-#[derive(Serialize, Deserialize, AbiExample, AbiEnumVisitor, Debug, PartialEq)]
+#[derive(Serialize, Deserialize, AbiExample, AbiEnumVisitor, Debug, PartialEq, Eq)]
 pub enum TransactionLogCollectorFilter {
     All,
     AllWithVotes,
@@ -785,7 +785,7 @@ pub struct TransactionLogCollectorConfig {
     pub filter: TransactionLogCollectorFilter,
 }
 
-#[derive(AbiExample, Clone, Debug, PartialEq)]
+#[derive(AbiExample, Clone, Debug, PartialEq, Eq)]
 pub struct TransactionLogInfo {
     pub signature: Signature,
     pub result: Result<()>,
@@ -829,7 +829,7 @@ pub trait NonceInfo {
 }
 
 /// Holds limited nonce info available during transaction checks
-#[derive(Clone, Debug, Default, PartialEq)]
+#[derive(Clone, Debug, Default, PartialEq, Eq)]
 pub struct NoncePartial {
     address: Pubkey,
     account: AccountSharedData,
@@ -855,7 +855,7 @@ impl NonceInfo for NoncePartial {
 }
 
 /// Holds fee subtracted nonce info
-#[derive(Clone, Debug, Default, PartialEq)]
+#[derive(Clone, Debug, Default, PartialEq, Eq)]
 pub struct NonceFull {
     address: Pubkey,
     account: AccountSharedData,
@@ -1101,7 +1101,7 @@ impl PartialEq for Bank {
     }
 }
 
-#[derive(Debug, PartialEq, Serialize, Deserialize, AbiExample, AbiEnumVisitor, Clone, Copy)]
+#[derive(Debug, PartialEq, Eq, Serialize, Deserialize, AbiExample, AbiEnumVisitor, Clone, Copy)]
 pub enum RewardType {
     Fee,
     Rent,
@@ -1138,7 +1138,7 @@ pub trait DropCallback: fmt::Debug {
     fn clone_box(&self) -> Box<dyn DropCallback + Send + Sync>;
 }
 
-#[derive(Debug, PartialEq, Serialize, Deserialize, AbiExample, Clone, Copy)]
+#[derive(Debug, PartialEq, Eq, Serialize, Deserialize, AbiExample, Clone, Copy)]
 pub struct RewardInfo {
     pub reward_type: RewardType,
     pub lamports: i64,          // Reward amount
@@ -17873,7 +17873,7 @@ pub(crate) mod tests {
                         .try_borrow_instruction_account(transaction_context, 1)?
                         .get_lamports();
                     let diff_balance = (new_balance as i64).saturating_sub(current_balance as i64);
-                    let amount = diff_balance.abs() as u64;
+                    let amount = diff_balance.unsigned_abs();
                     if diff_balance.is_positive() {
                         instruction_context
                             .try_borrow_instruction_account(transaction_context, 0)?

+ 1 - 1
runtime/src/expected_rent_collection.rs

@@ -16,7 +16,7 @@ use {
     std::sync::atomic::Ordering,
 };
 
-#[derive(Debug, PartialEq)]
+#[derive(Debug, PartialEq, Eq)]
 pub struct ExpectedRentCollection {
     partition_from_pubkey: PartitionIndex,
     epoch_of_max_storage_slot: Epoch,

+ 2 - 2
runtime/src/serde_snapshot/newer.rs

@@ -15,7 +15,7 @@ use {
 
 type AccountsDbFields = super::AccountsDbFields<SerializableAccountStorageEntry>;
 
-#[derive(Default, Clone, PartialEq, Debug, Deserialize, Serialize, AbiExample)]
+#[derive(Default, Clone, PartialEq, Eq, Debug, Deserialize, Serialize, AbiExample)]
 struct UnusedAccounts {
     unused1: HashSet<Pubkey>,
     unused2: HashSet<Pubkey>,
@@ -181,7 +181,7 @@ impl<'a> From<crate::bank::BankFieldsToSerialize<'a>> for SerializableVersionedB
 #[cfg(RUSTC_WITH_SPECIALIZATION)]
 impl<'a> solana_frozen_abi::abi_example::IgnoreAsHelper for SerializableVersionedBank<'a> {}
 
-#[derive(PartialEq)]
+#[derive(PartialEq, Eq)]
 pub(super) struct Context {}
 
 impl<'a> TypeContext<'a> for Context {

+ 1 - 1
runtime/src/stake_history.rs

@@ -6,7 +6,7 @@ use std::{
 };
 
 /// The SDK's stake history with clone-on-write semantics
-#[derive(Default, Clone, PartialEq, Debug, Deserialize, Serialize, AbiExample)]
+#[derive(Default, Clone, PartialEq, Eq, Debug, Deserialize, Serialize, AbiExample)]
 pub struct StakeHistory(Arc<StakeHistoryInner>);
 
 impl Deref for StakeHistory {

+ 1 - 1
runtime/src/stakes.rs

@@ -36,7 +36,7 @@ pub enum Error {
     StakeAccountNotFound(Pubkey),
 }
 
-#[derive(Debug, Clone, PartialEq, ToPrimitive)]
+#[derive(Debug, Clone, PartialEq, Eq, ToPrimitive)]
 pub enum InvalidCacheEntryReason {
     Missing,
     BadState,

+ 1 - 1
runtime/src/system_instruction_processor.rs

@@ -26,7 +26,7 @@ use {
 
 // represents an address that may or may not have been generated
 //  from a seed
-#[derive(PartialEq, Default, Debug)]
+#[derive(PartialEq, Eq, Default, Debug)]
 struct Address {
     address: Pubkey,
     base: Option<Pubkey>,

+ 1 - 1
runtime/src/vote_transaction.rs

@@ -6,7 +6,7 @@ use {
     solana_vote_program::vote_state::{Vote, VoteStateUpdate},
 };
 
-#[derive(Debug, PartialEq)]
+#[derive(Debug, PartialEq, Eq)]
 pub enum VoteTransaction {
     Vote(Vote),
     VoteStateUpdate(VoteStateUpdate),

+ 1 - 1
sdk/program/src/address_lookup_table_account.rs

@@ -6,7 +6,7 @@
 
 use solana_program::pubkey::Pubkey;
 
-#[derive(Debug, PartialEq, Clone)]
+#[derive(Debug, PartialEq, Eq, Clone)]
 pub struct AddressLookupTableAccount {
     pub key: Pubkey,
     pub addresses: Vec<Pubkey>,

+ 4 - 4
sdk/program/src/borsh.rs

@@ -119,7 +119,7 @@ mod tests {
         std::{collections::HashMap, mem::size_of},
     };
 
-    #[derive(PartialEq, Clone, Debug, BorshSerialize, BorshDeserialize, BorshSchema)]
+    #[derive(PartialEq, Eq, Clone, Debug, BorshSerialize, BorshDeserialize, BorshSchema)]
     enum TestEnum {
         NoValue,
         Number(u32),
@@ -148,12 +148,12 @@ mod tests {
         pub r#bool: bool,
     }
 
-    #[derive(Debug, PartialEq, BorshSerialize, BorshDeserialize, BorshSchema)]
+    #[derive(Debug, PartialEq, Eq, BorshSerialize, BorshDeserialize, BorshSchema)]
     struct Child {
         pub data: [u8; 64],
     }
 
-    #[derive(Debug, PartialEq, BorshSerialize, BorshDeserialize, BorshSchema)]
+    #[derive(Debug, PartialEq, Eq, BorshSerialize, BorshDeserialize, BorshSchema)]
     struct Parent {
         pub data: Vec<Child>,
     }
@@ -269,7 +269,7 @@ mod tests {
         );
     }
 
-    #[derive(Debug, PartialEq, BorshSerialize, BorshDeserialize, BorshSchema)]
+    #[derive(Debug, PartialEq, Eq, BorshSerialize, BorshDeserialize, BorshSchema)]
     struct StructWithHashMap {
         data: HashMap<String, TestEnum>,
     }

+ 1 - 1
sdk/program/src/bpf_loader_upgradeable.rs

@@ -25,7 +25,7 @@ use crate::{
 crate::declare_id!("BPFLoaderUpgradeab1e11111111111111111111111");
 
 /// Upgradeable loader account states
-#[derive(Debug, Serialize, Deserialize, PartialEq, Clone, Copy, AbiExample)]
+#[derive(Debug, Serialize, Deserialize, PartialEq, Eq, Clone, Copy, AbiExample)]
 pub enum UpgradeableLoaderState {
     /// Account is not initialized.
     Uninitialized,

+ 1 - 1
sdk/program/src/clock.rs

@@ -110,7 +110,7 @@ pub type UnixTimestamp = i64;
 ///  as the network progresses).
 ///
 #[repr(C)]
-#[derive(Serialize, Deserialize, Debug, Default, PartialEq)]
+#[derive(Serialize, Deserialize, Debug, Default, PartialEq, Eq)]
 pub struct Clock {
     /// the current network/bank Slot
     pub slot: Slot,

+ 1 - 1
sdk/program/src/decode_error.rs

@@ -37,7 +37,7 @@ mod tests {
 
     #[test]
     fn test_decode_custom_error_to_enum() {
-        #[derive(Debug, FromPrimitive, PartialEq)]
+        #[derive(Debug, FromPrimitive, PartialEq, Eq)]
         enum TestEnum {
             A,
             B,

部分文件因文件數量過多而無法顯示