diff --git a/.github/workflows/build-and-test-bridge.yml b/.github/workflows/build-and-test-bridge.yml index 2dfc054f18..5c0bbca826 100644 --- a/.github/workflows/build-and-test-bridge.yml +++ b/.github/workflows/build-and-test-bridge.yml @@ -29,7 +29,7 @@ jobs: timeout-minutes: 30 runs-on: ${{ matrix.os }} container: - image: ghcr.io/anoma/namada:wasm-0.8.0 + image: ghcr.io/anoma/namada:wasm-0.11.0 strategy: fail-fast: false matrix: @@ -143,7 +143,7 @@ jobs: fail-fast: false matrix: os: [ubuntu-latest] - nightly_version: [nightly-2022-05-20] + nightly_version: [nightly-2022-11-03] mold_version: [1.7.0] make: - name: ABCI @@ -503,4 +503,4 @@ jobs: run: sccache --show-stats - name: Stop sccache server if: always() - run: sccache --stop-server || true \ No newline at end of file + run: sccache --stop-server || true diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml index f19d842a4d..64cd0da2bb 100644 --- a/.github/workflows/build-and-test.yml +++ b/.github/workflows/build-and-test.yml @@ -31,7 +31,7 @@ jobs: timeout-minutes: 30 runs-on: ${{ matrix.os }} container: - image: ghcr.io/anoma/namada:wasm-0.8.0 + image: ghcr.io/anoma/namada:wasm-0.11.0 strategy: fail-fast: false matrix: @@ -146,7 +146,7 @@ jobs: fail-fast: false matrix: os: [ubuntu-latest] - nightly_version: [nightly-2022-05-20] + nightly_version: [nightly-2022-11-03] mold_version: [1.7.0] make: - name: ABCI @@ -506,4 +506,4 @@ jobs: run: sccache --show-stats - name: Stop sccache server if: always() - run: sccache --stop-server || true \ No newline at end of file + run: sccache --stop-server || true diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index 22792c8d9b..7364a477fa 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -27,7 +27,7 @@ jobs: fail-fast: false matrix: os: [ubuntu-latest] - nightly_version: [nightly-2022-05-20] + nightly_version: [nightly-2022-11-03] make: - name: Clippy command: clippy diff --git a/.github/workflows/cron.yml b/.github/workflows/cron.yml index 51e19208e3..260b0de4c6 100644 --- a/.github/workflows/cron.yml +++ b/.github/workflows/cron.yml @@ -20,7 +20,7 @@ jobs: fail-fast: false matrix: os: [ubuntu-latest] - nightly_version: [nightly-2022-05-20] + nightly_version: [nightly-2022-11-03] make: - name: Audit command: audit diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index cb8633c99a..b015bbd7cc 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -27,7 +27,7 @@ jobs: fail-fast: false matrix: os: [ubuntu-latest] - nightly_version: [nightly-2022-05-20] + nightly_version: [nightly-2022-11-03] mdbook_version: [rust-lang/mdbook@v0.4.18] mdbook_mermaid: [badboy/mdbook-mermaid@v0.11.1] mdbook_linkcheck: [Michael-F-Bryan/mdbook-linkcheck@v0.7.6] diff --git a/apps/src/bin/anoma-wallet/cli.rs b/apps/src/bin/anoma-wallet/cli.rs index 970cf8d908..62857e76f3 100644 --- a/apps/src/bin/anoma-wallet/cli.rs +++ b/apps/src/bin/anoma-wallet/cli.rs @@ -455,8 +455,7 @@ fn address_or_alias_find(ctx: Context, args: args::AddressOrAliasFind) { message." ); } else if args.alias.is_some() { - if let Some(address) = - wallet.find_address(&args.alias.as_ref().unwrap()) + if let Some(address) = wallet.find_address(args.alias.as_ref().unwrap()) { println!("Found address {}", address.to_pretty_string()); } else { diff --git a/apps/src/lib/cli.rs b/apps/src/lib/cli.rs index 7fb752e6af..4d0ebcad23 100644 --- a/apps/src/lib/cli.rs +++ b/apps/src/lib/cli.rs @@ -3419,6 +3419,7 @@ pub fn anoma_node_cli() -> Result<(cmds::AnomaNode, Context)> { cmds::AnomaNode::parse_or_print_help(app) } +#[allow(clippy::large_enum_variant)] pub enum AnomaClient { WithoutContext(cmds::Utils, args::Global), WithContext(Box<(cmds::AnomaClientWithContext, Context)>), diff --git a/apps/src/lib/cli/context.rs b/apps/src/lib/cli/context.rs index 942936ffa4..04bd91e6ce 100644 --- a/apps/src/lib/cli/context.rs +++ b/apps/src/lib/cli/context.rs @@ -90,7 +90,7 @@ impl Context { let chain_dir = global_args .base_dir - .join(&global_config.default_chain_id.as_str()); + .join(global_config.default_chain_id.as_str()); let genesis_file_path = global_args .base_dir .join(format!("{}.toml", global_config.default_chain_id.as_str())); diff --git a/apps/src/lib/client/rpc.rs b/apps/src/lib/client/rpc.rs index 53472241c5..9fa4fc9ee0 100644 --- a/apps/src/lib/client/rpc.rs +++ b/apps/src/lib/client/rpc.rs @@ -1240,7 +1240,7 @@ pub async fn query_proposal_result( cli::safe_exit(1) } - let file = File::open(&path.join("proposal")) + let file = File::open(path.join("proposal")) .expect("Proposal file must exist."); let proposal: OfflineProposal = serde_json::from_reader(file).expect( @@ -2420,11 +2420,11 @@ pub async fn query_tx_response( // applied to the blockchain let query_event_opt = response_block_results.end_block_events.and_then(|events| { - (&events) + events .iter() .find(|event| { event.type_str == tx_query.event_type() - && (&event.attributes).iter().any(|tag| { + && event.attributes.iter().any(|tag| { tag.key.as_ref() == "hash" && tag.value.as_ref() == tx_query.tx_hash() }) @@ -2439,8 +2439,8 @@ pub async fn query_tx_response( ) })?; // Reformat the event attributes so as to ease value extraction - let event_map: std::collections::HashMap<&str, &str> = (&query_event - .attributes) + let event_map: std::collections::HashMap<&str, &str> = query_event + .attributes .iter() .map(|tag| (tag.key.as_ref(), tag.value.as_ref())) .collect(); diff --git a/apps/src/lib/client/utils.rs b/apps/src/lib/client/utils.rs index c03a8bab8f..236dcea307 100644 --- a/apps/src/lib/client/utils.rs +++ b/apps/src/lib/client/utils.rs @@ -401,8 +401,7 @@ pub fn init_network( archive_dir, }: args::InitNetwork, ) { - let mut config = - genesis_config::open_genesis_config(&genesis_path).unwrap(); + let mut config = genesis_config::open_genesis_config(genesis_path).unwrap(); // Update the WASM checksums let checksums = @@ -654,7 +653,7 @@ pub fn init_network( fs::rename(&temp_dir, &chain_dir).unwrap(); // Copy the WASM checksums - let wasm_dir_full = chain_dir.join(&config::DEFAULT_WASM_DIR); + let wasm_dir_full = chain_dir.join(config::DEFAULT_WASM_DIR); fs::create_dir_all(&wasm_dir_full).unwrap(); fs::copy( &wasm_checksums_path, @@ -671,14 +670,14 @@ pub fn init_network( .join(config::DEFAULT_BASE_DIR); let temp_validator_chain_dir = validator_dir.join(temp_chain_id.as_str()); - let validator_chain_dir = validator_dir.join(&chain_id.as_str()); + let validator_chain_dir = validator_dir.join(chain_id.as_str()); // Rename the generated directories for validators from `temp_chain_id` // to `chain_id` - std::fs::rename(&temp_validator_chain_dir, &validator_chain_dir) + std::fs::rename(temp_validator_chain_dir, &validator_chain_dir) .unwrap(); // Copy the WASM checksums - let wasm_dir_full = validator_chain_dir.join(&config::DEFAULT_WASM_DIR); + let wasm_dir_full = validator_chain_dir.join(config::DEFAULT_WASM_DIR); fs::create_dir_all(&wasm_dir_full).unwrap(); fs::copy( &wasm_checksums_path, @@ -1042,7 +1041,7 @@ pub fn write_tendermint_node_key( .create(true) .write(true) .truncate(true) - .open(&node_key_path) + .open(node_key_path) .expect("Couldn't create validator node key file"); serde_json::to_writer_pretty(file, &tm_node_keypair_json) .expect("Couldn't write validator node key file"); diff --git a/apps/src/lib/config/genesis.rs b/apps/src/lib/config/genesis.rs index 6e3bcb0d52..411854cdc0 100644 --- a/apps/src/lib/config/genesis.rs +++ b/apps/src/lib/config/genesis.rs @@ -294,7 +294,7 @@ pub mod genesis_config { Validator { pos_data: GenesisValidator { - address: Address::decode(&config.address.as_ref().unwrap()) + address: Address::decode(config.address.as_ref().unwrap()) .unwrap(), tokens: token::Amount::whole(config.tokens.unwrap_or_default()), consensus_key: config @@ -369,8 +369,7 @@ pub mod genesis_config { let token_vp_config = wasm.get(token_vp_name).unwrap(); TokenAccount { - address: Address::decode(&config.address.as_ref().unwrap()) - .unwrap(), + address: Address::decode(config.address.as_ref().unwrap()).unwrap(), vp_code_path: token_vp_config.filename.to_owned(), vp_sha256: token_vp_config .sha256 @@ -388,7 +387,7 @@ pub mod genesis_config { .iter() .map(|(alias_or_address, amount)| { ( - match Address::decode(&alias_or_address) { + match Address::decode(alias_or_address) { Ok(address) => address, Err(decode_err) => { if let Some(alias) = @@ -451,8 +450,7 @@ pub mod genesis_config { let account_vp_config = wasm.get(account_vp_name).unwrap(); EstablishedAccount { - address: Address::decode(&config.address.as_ref().unwrap()) - .unwrap(), + address: Address::decode(config.address.as_ref().unwrap()).unwrap(), vp_code_path: account_vp_config.filename.to_owned(), vp_sha256: account_vp_config .sha256 @@ -474,7 +472,7 @@ pub mod genesis_config { .iter() .map(|(address, hex)| { ( - storage::Key::parse(&address).unwrap(), + storage::Key::parse(address).unwrap(), hex.to_bytes().unwrap(), ) }) @@ -535,6 +533,7 @@ pub mod genesis_config { .iter() .map(|(name, cfg)| (name.clone(), load_implicit(cfg))) .collect(); + #[allow(clippy::iter_kv_map)] let token_accounts = token .iter() .map(|(_name, cfg)| { @@ -935,8 +934,8 @@ pub fn genesis() -> Genesis { ((&validator.account_key).into(), default_key_tokens), ]); let token_accounts = address::tokens() - .into_iter() - .map(|(address, _)| TokenAccount { + .into_keys() + .map(|address| TokenAccount { address, vp_code_path: vp_token_path.into(), vp_sha256: Default::default(), diff --git a/apps/src/lib/node/ledger/mod.rs b/apps/src/lib/node/ledger/mod.rs index c0c707cbd0..bf06707e05 100644 --- a/apps/src/lib/node/ledger/mod.rs +++ b/apps/src/lib/node/ledger/mod.rs @@ -137,7 +137,7 @@ impl Shell { CheckTxType::New => MempoolTxType::NewTransaction, CheckTxType::Recheck => MempoolTxType::RecheckTransaction, }; - Ok(Response::CheckTx(self.mempool_validate(&*tx.tx, r#type))) + Ok(Response::CheckTx(self.mempool_validate(&tx.tx, r#type))) } Request::ListSnapshots(_) => { Ok(Response::ListSnapshots(Default::default())) diff --git a/apps/src/lib/node/ledger/shell/init_chain.rs b/apps/src/lib/node/ledger/shell/init_chain.rs index aee2d205ad..3a0e0bc08f 100644 --- a/apps/src/lib/node/ledger/shell/init_chain.rs +++ b/apps/src/lib/node/ledger/shell/init_chain.rs @@ -77,7 +77,7 @@ where pos_inflation_amount, } = genesis.parameters; let implicit_vp = - wasm_loader::read_wasm(&self.wasm_dir, &implicit_vp_code_path) + wasm_loader::read_wasm(&self.wasm_dir, implicit_vp_code_path) .map_err(Error::ReadingWasm)?; // In dev, we don't check the hash #[cfg(feature = "dev")] diff --git a/apps/src/lib/node/ledger/shell/mod.rs b/apps/src/lib/node/ledger/shell/mod.rs index a52076ad08..f3fe955afd 100644 --- a/apps/src/lib/node/ledger/shell/mod.rs +++ b/apps/src/lib/node/ledger/shell/mod.rs @@ -142,7 +142,7 @@ pub type Result = std::result::Result; pub fn reset(config: config::Ledger) -> Result<()> { // simply nuke the DB files let db_path = &config.db_dir(); - match std::fs::remove_dir_all(&db_path) { + match std::fs::remove_dir_all(db_path) { Err(e) if e.kind() == std::io::ErrorKind::NotFound => (), res => res.map_err(Error::RemoveDB)?, }; diff --git a/apps/src/lib/node/ledger/storage/mod.rs b/apps/src/lib/node/ledger/storage/mod.rs index b83c855538..344defbd6b 100644 --- a/apps/src/lib/node/ledger/storage/mod.rs +++ b/apps/src/lib/node/ledger/storage/mod.rs @@ -93,7 +93,7 @@ mod tests { assert_eq!(gas, key.len() as u64); let (result, gas) = storage.read(&key).expect("read failed"); let read_value: u64 = - types::decode(&result.expect("value doesn't exist")) + types::decode(result.expect("value doesn't exist")) .expect("decoding failed"); assert_eq!(read_value, value); assert_eq!(gas, key.len() as u64 + value_bytes_len as u64); diff --git a/apps/src/lib/node/ledger/storage/rocksdb.rs b/apps/src/lib/node/ledger/storage/rocksdb.rs index ab6dbfe1a8..05075def5a 100644 --- a/apps/src/lib/node/ledger/storage/rocksdb.rs +++ b/apps/src/lib/node/ledger/storage/rocksdb.rs @@ -758,7 +758,7 @@ impl DB for RocksDB { // Write the new key-val self.0 - .put(&subspace_key.to_string(), value) + .put(subspace_key.to_string(), value) .map_err(|e| Error::DBError(e.into_string()))?; Ok(size_diff) diff --git a/apps/src/lib/node/ledger/tendermint_node.rs b/apps/src/lib/node/ledger/tendermint_node.rs index cbd5cd4879..a89a3193b2 100644 --- a/apps/src/lib/node/ledger/tendermint_node.rs +++ b/apps/src/lib/node/ledger/tendermint_node.rs @@ -86,7 +86,7 @@ pub async fn run( // init and run a tendermint node child process let output = Command::new(&tendermint_path) - .args(&["init", &mode, "--home", &home_dir_string]) + .args(["init", &mode, "--home", &home_dir_string]) .output() .await .map_err(Error::Init)?; @@ -110,7 +110,7 @@ pub async fn run( update_tendermint_config(&home_dir, config).await?; let mut tendermint_node = Command::new(&tendermint_path); - tendermint_node.args(&[ + tendermint_node.args([ "start", "--proxy_app", &ledger_address, @@ -170,7 +170,7 @@ pub fn reset(tendermint_dir: impl AsRef) -> Result<()> { let tendermint_dir = tendermint_dir.as_ref().to_string_lossy(); // reset all the Tendermint state, if any std::process::Command::new(tendermint_path) - .args(&[ + .args([ "reset-state", "unsafe-all", // NOTE: log config: https://docs.tendermint.com/master/nodes/logging.html#configuring-log-levels diff --git a/apps/src/lib/wallet/store.rs b/apps/src/lib/wallet/store.rs index c65c3ecb61..65e39f50a8 100644 --- a/apps/src/lib/wallet/store.rs +++ b/apps/src/lib/wallet/store.rs @@ -421,7 +421,7 @@ impl Store { if alias.is_empty() { println!( "Empty alias given, defaulting to {}.", - alias = Into::::into(pkh.to_string()) + Into::::into(pkh.to_string()) ); } // Addresses and keypairs can share aliases, so first remove any @@ -573,10 +573,7 @@ impl Store { address: Address, ) -> Option { if alias.is_empty() { - println!( - "Empty alias given, defaulting to {}.", - alias = address.encode() - ); + println!("Empty alias given, defaulting to {}.", address.encode()); } // Addresses and keypairs can share aliases, so first remove any keys // sharing the same namesake before checking if alias has been used. diff --git a/docker/namada-wasm/Dockerfile b/docker/namada-wasm/Dockerfile index 5b47fa35f4..2b4a55a46c 100644 --- a/docker/namada-wasm/Dockerfile +++ b/docker/namada-wasm/Dockerfile @@ -1,12 +1,12 @@ # This docker is used for deterministic wasm builds # The version should be matching the version set in wasm/rust-toolchain.toml -FROM rust:1.61.0-bullseye +FROM rust:1.65.0-bullseye WORKDIR /__w/namada/namada # The version should be matching the version set above -RUN rustup toolchain install 1.61.0 --profile minimal +RUN rustup toolchain install 1.65.0 --profile minimal RUN rustup target add wasm32-unknown-unknown # Download binaryen and extract wasm-opt diff --git a/docker/namada/Dockerfile b/docker/namada/Dockerfile index 2335ea9f46..9f8b50ca84 100644 --- a/docker/namada/Dockerfile +++ b/docker/namada/Dockerfile @@ -1,4 +1,4 @@ -FROM lukemathwalker/cargo-chef:latest-rust-1.61.0 AS chef +FROM lukemathwalker/cargo-chef:latest-rust-1.65.0 AS chef WORKDIR /app FROM chef AS planner diff --git a/encoding_spec/src/main.rs b/encoding_spec/src/main.rs index 5579178210..1c0b416a7f 100644 --- a/encoding_spec/src/main.rs +++ b/encoding_spec/src/main.rs @@ -372,10 +372,11 @@ fn md_fmt_type(type_name: impl AsRef) -> String { fn write_generated_code_notice( file: &mut std::fs::File, ) -> Result<(), Box> { + let path = std::file!(); writeln!( file, - "", - std::file!() + "", )?; Ok(()) } @@ -390,9 +391,7 @@ fn escape_fragment_anchor(string: impl AsRef) -> String { // mdBook turns headings fragment links to lowercase string .as_ref() - .replace('>', "") - .replace('<', "") - .replace(',', "") + .replace(['>', '<', ','], "") .replace(' ', "-") .replace(':', "") .to_ascii_lowercase() diff --git a/proof_of_stake/src/epoched.rs b/proof_of_stake/src/epoched.rs index cc2f24f1a8..96debb1c9a 100644 --- a/proof_of_stake/src/epoched.rs +++ b/proof_of_stake/src/epoched.rs @@ -638,11 +638,15 @@ mod tests { Set { value: Data, epoch: Epoch }, UpdateFromOffset(UpdateFromOffset), } + + /// Function for updating epoched data from an offset + pub type UpdateFn = Rc; + /// These are the arguments of one of the constructors in /// [`EpochedTransition`]. It's not inlined because we need to manually /// implement `Debug`. struct UpdateFromOffset { - update_value: Rc, + update_value: UpdateFn, epoch: Epoch, offset: DynEpochOffset, } @@ -889,12 +893,12 @@ mod tests { // Post-conditions assert_eq!(data.last_update, epoch); assert_eq!( - data.data[offset as usize], + data.data[offset], Some(value), "The value at offset must be updated" ); assert!( - data.data.len() > offset as usize, + data.data.len() > offset, "The length of the data must be greater than the \ offset" ); @@ -1191,7 +1195,7 @@ mod tests { change" ); assert!( - data.data.len() > offset as usize, + data.data.len() > offset, "The length of the data must be greater than the \ offset" ); diff --git a/proof_of_stake/src/lib.rs b/proof_of_stake/src/lib.rs index bf983ec69c..30e167a7d1 100644 --- a/proof_of_stake/src/lib.rs +++ b/proof_of_stake/src/lib.rs @@ -858,13 +858,13 @@ pub trait PosBase { &mut self, params: &'a PosParams, validators: impl Iterator< - Item = &'a GenesisValidator< - Self::Address, - Self::TokenAmount, - Self::PublicKey, - >, - > + Clone - + 'a, + Item = &'a GenesisValidator< + Self::Address, + Self::TokenAmount, + Self::PublicKey, + >, + > + Clone + + 'a, current_epoch: impl Into, ) -> Result<(), GenesisError> { let current_epoch = current_epoch.into(); @@ -1289,17 +1289,17 @@ where fn init_genesis<'a, Address, TokenAmount, TokenChange, PK>( params: &'a PosParams, validators: impl Iterator> - + Clone - + 'a, + + Clone + + 'a, current_epoch: Epoch, ) -> Result< GenesisData< impl Iterator< - Item = Result< - GenesisValidatorData, - GenesisError, - >, - > + 'a, + Item = Result< + GenesisValidatorData, + GenesisError, + >, + > + 'a, Address, TokenAmount, TokenChange, @@ -2019,9 +2019,9 @@ fn update_validator_set( validator_set.inactive.insert(validator_post); } } else { - debug_assert!(validator_set - .active - .contains(&validator_pre)); + debug_assert!( + validator_set.active.contains(&validator_pre) + ); let max_inactive_validator = validator_set.inactive.last_shim(); let max_bonded_stake = max_inactive_validator diff --git a/rust-nightly-version b/rust-nightly-version index e6c378230a..a39b15f0ea 100644 --- a/rust-nightly-version +++ b/rust-nightly-version @@ -1 +1 @@ -nightly-2022-05-20 +nightly-2022-11-03 diff --git a/rust-toolchain.toml b/rust-toolchain.toml index b12fcffcfe..bb2965ded6 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,4 +1,4 @@ [toolchain] -channel = "1.61.0" +channel = "1.65.0" components = ["rustc", "cargo", "rust-std", "rust-docs", "rls", "rust-src", "rust-analysis"] targets = ['wasm32-unknown-unknown'] \ No newline at end of file diff --git a/rustfmt.toml b/rustfmt.toml index fc535ff5ca..5be227e0b6 100644 --- a/rustfmt.toml +++ b/rustfmt.toml @@ -31,7 +31,6 @@ imports_indent = "Block" imports_layout = "Mixed" indent_style = "Block" inline_attribute_width = 0 -license_template_path = "" make_backup = false match_arm_blocks = true match_arm_leading_pipes = "Never" @@ -46,9 +45,7 @@ remove_nested_parens = true reorder_impl_items = true reorder_imports = true reorder_modules = true -report_fixme = "Never" -report_todo = "Never" -required_version = "1.4.38" +required_version = "1.5.1" skip_children = false space_after_colon = true space_before_colon = false diff --git a/shared/build.rs b/shared/build.rs index 74dd72b753..c872467fcf 100644 --- a/shared/build.rs +++ b/shared/build.rs @@ -34,12 +34,7 @@ fn main() { if let Ok(rustfmt_toolchain) = read_to_string(RUSTFMT_TOOLCHAIN_SRC) { // Try to find the path to rustfmt. if let Ok(output) = Command::new("rustup") - .args(&[ - "which", - "rustfmt", - "--toolchain", - rustfmt_toolchain.trim(), - ]) + .args(["which", "rustfmt", "--toolchain", rustfmt_toolchain.trim()]) .output() { if let Ok(rustfmt) = str::from_utf8(&output.stdout) { diff --git a/shared/src/ledger/gas.rs b/shared/src/ledger/gas.rs index c7da7b132c..99eb606b7b 100644 --- a/shared/src/ledger/gas.rs +++ b/shared/src/ledger/gas.rs @@ -208,7 +208,7 @@ impl VpsGas { let parallel_gas = self.rest.iter().sum::() / PARALLEL_GAS_DIVIDER; self.max .unwrap_or_default() - .checked_add(parallel_gas as u64) + .checked_add(parallel_gas) .ok_or(Error::GasOverflow) } } diff --git a/shared/src/ledger/governance/storage.rs b/shared/src/ledger/governance/storage.rs index 701881d476..fb4ecaf76b 100644 --- a/shared/src/ledger/governance/storage.rs +++ b/shared/src/ledger/governance/storage.rs @@ -175,121 +175,74 @@ pub fn is_end_epoch_key(key: &Key) -> bool { /// Check if key is counter key pub fn is_counter_key(key: &Key) -> bool { - match &key.segments[..] { - [DbKeySeg::AddressSeg(addr), DbKeySeg::StringSeg(counter)] - if addr == &ADDRESS && counter == COUNTER_KEY => - { - true - } - _ => false, - } + matches!(&key.segments[..], [DbKeySeg::AddressSeg(addr), DbKeySeg::StringSeg(counter)] if addr == &ADDRESS && counter == COUNTER_KEY) } /// Check if key is a proposal fund parameter key pub fn is_min_proposal_fund_key(key: &Key) -> bool { - match &key.segments[..] { - [ - DbKeySeg::AddressSeg(addr), - DbKeySeg::StringSeg(min_funds_param), - ] if addr == &ADDRESS && min_funds_param == MIN_PROPOSAL_FUND_KEY => { - true - } - _ => false, - } + matches!(&key.segments[..], [ + DbKeySeg::AddressSeg(addr), + DbKeySeg::StringSeg(min_funds_param), + ] if addr == &ADDRESS && min_funds_param == MIN_PROPOSAL_FUND_KEY) } /// Check if key is a proposal max content parameter key pub fn is_max_content_size_key(key: &Key) -> bool { - match &key.segments[..] { - [ - DbKeySeg::AddressSeg(addr), - DbKeySeg::StringSeg(max_content_size_param), - ] if addr == &ADDRESS - && max_content_size_param == MAX_PROPOSAL_CONTENT_SIZE_KEY => - { - true - } - _ => false, - } + matches!(&key.segments[..], [ + DbKeySeg::AddressSeg(addr), + DbKeySeg::StringSeg(max_content_size_param), + ] if addr == &ADDRESS + && max_content_size_param == MAX_PROPOSAL_CONTENT_SIZE_KEY) } /// Check if key is a max proposal size key pub fn is_max_proposal_code_size_key(key: &Key) -> bool { - match &key.segments[..] { - [ - DbKeySeg::AddressSeg(addr), - DbKeySeg::StringSeg(max_content_size_param), - ] if addr == &ADDRESS - && max_content_size_param == MAX_PROPOSAL_CONTENT_SIZE_KEY => - { - true - } - _ => false, - } + matches!(&key.segments[..], [ + DbKeySeg::AddressSeg(addr), + DbKeySeg::StringSeg(max_content_size_param), + ] if addr == &ADDRESS + && max_content_size_param == MAX_PROPOSAL_CONTENT_SIZE_KEY) } /// Check if key is a min proposal period param key pub fn is_min_proposal_period_key(key: &Key) -> bool { - match &key.segments[..] { - [ - DbKeySeg::AddressSeg(addr), - DbKeySeg::StringSeg(min_proposal_period_param), - ] if addr == &ADDRESS - && min_proposal_period_param == MIN_PROPOSAL_PERIOD_KEY => - { - true - } - _ => false, - } + matches!(&key.segments[..], [ + DbKeySeg::AddressSeg(addr), + DbKeySeg::StringSeg(min_proposal_period_param), + ] if addr == &ADDRESS + && min_proposal_period_param == MIN_PROPOSAL_PERIOD_KEY) } /// Check if key is a max proposal period param key pub fn is_max_proposal_period_key(key: &Key) -> bool { - match &key.segments[..] { - [ - DbKeySeg::AddressSeg(addr), - DbKeySeg::StringSeg(max_proposal_period_param), - ] if addr == &ADDRESS - && max_proposal_period_param == MAX_PROPOSAL_PERIOD_KEY => - { - true - } - _ => false, - } + matches!(&key.segments[..], [ + DbKeySeg::AddressSeg(addr), + DbKeySeg::StringSeg(max_proposal_period_param), + ] if addr == &ADDRESS + && max_proposal_period_param == MAX_PROPOSAL_PERIOD_KEY) } /// Check if key is a min grace epoch key pub fn is_commit_proposal_key(key: &Key) -> bool { - match &key.segments[..] { - [ - DbKeySeg::AddressSeg(addr), - DbKeySeg::StringSeg(prefix), - DbKeySeg::StringSeg(epoch_prefix), - DbKeySeg::StringSeg(_epoch), - DbKeySeg::StringSeg(_id), - ] if addr == &ADDRESS - && prefix == PROPOSAL_PREFIX - && epoch_prefix == PROPOSAL_COMMITTING_EPOCH => - { - true - } - _ => false, - } + matches!(&key.segments[..], [ + DbKeySeg::AddressSeg(addr), + DbKeySeg::StringSeg(prefix), + DbKeySeg::StringSeg(epoch_prefix), + DbKeySeg::StringSeg(_epoch), + DbKeySeg::StringSeg(_id), + ] if addr == &ADDRESS + && prefix == PROPOSAL_PREFIX + && epoch_prefix == PROPOSAL_COMMITTING_EPOCH + ) } /// Check if key is a commit proposal key pub fn is_min_grace_epoch_key(key: &Key) -> bool { - match &key.segments[..] { - [ - DbKeySeg::AddressSeg(addr), - DbKeySeg::StringSeg(min_grace_epoch_param), - ] if addr == &ADDRESS - && min_grace_epoch_param == MIN_GRACE_EPOCH_KEY => - { - true - } - _ => false, - } + matches!(&key.segments[..], [ + DbKeySeg::AddressSeg(addr), + DbKeySeg::StringSeg(min_grace_epoch_param), + ] if addr == &ADDRESS + && min_grace_epoch_param == MIN_GRACE_EPOCH_KEY) } /// Check if key is parameter key diff --git a/shared/src/ledger/ibc/handler.rs b/shared/src/ledger/ibc/handler.rs index 0c76f086eb..c79f8ac6fb 100644 --- a/shared/src/ledger/ibc/handler.rs +++ b/shared/src/ledger/ibc/handler.rs @@ -939,7 +939,7 @@ pub trait IbcActions { if let Some(hash) = storage::token_hash_from_denom(&data.denom) .map_err(Error::IbcStorage)? { - let denom_key = storage::ibc_denom_key(&hash); + let denom_key = storage::ibc_denom_key(hash); let denom_bytes = self.read_ibc_data(&denom_key)?.ok_or_else(|| { Error::SendingToken(format!( diff --git a/shared/src/ledger/ibc/vp/channel.rs b/shared/src/ledger/ibc/vp/channel.rs index d2c586c6f0..80adb7969f 100644 --- a/shared/src/ledger/ibc/vp/channel.rs +++ b/shared/src/ledger/ibc/vp/channel.rs @@ -748,7 +748,7 @@ where .map_err(|_| Ics04Error::implementation_specific())?; if let Some(id) = channel.connection_hops().get(0) { if id == conn_id { - let key = Key::parse(&key).map_err(|_| { + let key = Key::parse(key).map_err(|_| { Ics04Error::implementation_specific() })?; let port_channel_id = diff --git a/shared/src/ledger/ibc/vp/client.rs b/shared/src/ledger/ibc/vp/client.rs index 453006f356..05ac3c3528 100644 --- a/shared/src/ledger/ibc/vp/client.rs +++ b/shared/src/ledger/ibc/vp/client.rs @@ -488,7 +488,7 @@ where .iter_pre_next(&mut iter) .map_err(|_| Ics02Error::implementation_specific())? { - let key = Key::parse(&key) + let key = Key::parse(key) .map_err(|_| Ics02Error::implementation_specific())?; let consensus_height = consensus_height(&key) .map_err(|_| Ics02Error::implementation_specific())?; @@ -529,7 +529,7 @@ where .iter_pre_next(&mut iter) .map_err(|_| Ics02Error::implementation_specific())? { - let key = Key::parse(&key) + let key = Key::parse(key) .map_err(|_| Ics02Error::implementation_specific())?; let consensus_height = consensus_height(&key) .map_err(|_| Ics02Error::implementation_specific())?; diff --git a/shared/src/ledger/ibc/vp/denom.rs b/shared/src/ledger/ibc/vp/denom.rs index 40e95c51c2..18923f0050 100644 --- a/shared/src/ledger/ibc/vp/denom.rs +++ b/shared/src/ledger/ibc/vp/denom.rs @@ -48,7 +48,7 @@ where &data.denom ); let token_hash = storage::calc_hash(&denom); - let denom_key = storage::ibc_denom_key(&token_hash.raw()); + let denom_key = storage::ibc_denom_key(token_hash.raw()); match self.ctx.read_bytes_post(&denom_key) { Ok(Some(v)) => match std::str::from_utf8(&v) { Ok(d) if d == denom => Ok(()), diff --git a/shared/src/ledger/ibc/vp/packet.rs b/shared/src/ledger/ibc/vp/packet.rs index aafb8890b6..6a815dcdc3 100644 --- a/shared/src/ledger/ibc/vp/packet.rs +++ b/shared/src/ledger/ibc/vp/packet.rs @@ -711,7 +711,7 @@ where Error::Denom(format!("Invalid denom: error {}", e)) })? { - let denom_key = ibc_denom_key(&token_hash); + let denom_key = ibc_denom_key(token_hash); let denom_bytes = match self.ctx.read_bytes_pre(&denom_key) { Ok(Some(v)) => v, _ => { diff --git a/shared/src/ledger/ibc/vp/token.rs b/shared/src/ledger/ibc/vp/token.rs index b683be2195..927bfd412b 100644 --- a/shared/src/ledger/ibc/vp/token.rs +++ b/shared/src/ledger/ibc/vp/token.rs @@ -148,7 +148,7 @@ where Error::Denom(format!("Invalid denom: error {}", e)) })? { - let denom_key = ibc_storage::ibc_denom_key(&token_hash); + let denom_key = ibc_storage::ibc_denom_key(token_hash); let denom_bytes = match self.ctx.read_bytes_pre(&denom_key) { Ok(Some(v)) => v, _ => { @@ -174,7 +174,7 @@ where .denom .strip_prefix(&format!("{}/", ibc_storage::MULTITOKEN_STORAGE_KEY)) { - let denom_key = ibc_storage::ibc_denom_key(&denom); + let denom_key = ibc_storage::ibc_denom_key(denom); match self.ctx.read_bytes_pre(&denom_key)? { Some(v) => std::str::from_utf8(&v) .map_err(|e| { diff --git a/shared/src/ledger/native_vp.rs b/shared/src/ledger/native_vp.rs index c30f60cf43..149ae0d3e5 100644 --- a/shared/src/ledger/native_vp.rs +++ b/shared/src/ledger/native_vp.rs @@ -141,7 +141,7 @@ where /// Add a gas cost incured in a validity predicate pub fn add_gas(&self, used_gas: u64) -> Result<(), vp_env::RuntimeError> { - vp_env::add_gas(&mut *self.gas_meter.borrow_mut(), used_gas) + vp_env::add_gas(&mut self.gas_meter.borrow_mut(), used_gas) } /// Read access to the prior storage (state before tx execution) @@ -173,7 +173,7 @@ where key: &crate::types::storage::Key, ) -> Result>, storage_api::Error> { vp_env::read_pre( - &mut *self.ctx.gas_meter.borrow_mut(), + &mut self.ctx.gas_meter.borrow_mut(), self.ctx.storage, self.ctx.write_log, key, @@ -186,7 +186,7 @@ where key: &crate::types::storage::Key, ) -> Result { vp_env::has_key_pre( - &mut *self.ctx.gas_meter.borrow_mut(), + &mut self.ctx.gas_meter.borrow_mut(), self.ctx.storage, key, ) @@ -204,7 +204,7 @@ where &self, iter: &mut Self::PrefixIter, ) -> Result)>, storage_api::Error> { - vp_env::iter_pre_next::(&mut *self.ctx.gas_meter.borrow_mut(), iter) + vp_env::iter_pre_next::(&mut self.ctx.gas_meter.borrow_mut(), iter) .into_storage_result() } @@ -257,7 +257,7 @@ where key: &crate::types::storage::Key, ) -> Result>, storage_api::Error> { vp_env::read_post( - &mut *self.ctx.gas_meter.borrow_mut(), + &mut self.ctx.gas_meter.borrow_mut(), self.ctx.storage, self.ctx.write_log, key, @@ -270,7 +270,7 @@ where key: &crate::types::storage::Key, ) -> Result { vp_env::has_key_post( - &mut *self.ctx.gas_meter.borrow_mut(), + &mut self.ctx.gas_meter.borrow_mut(), self.ctx.storage, self.ctx.write_log, key, @@ -290,7 +290,7 @@ where iter: &mut Self::PrefixIter, ) -> Result)>, storage_api::Error> { vp_env::iter_post_next::( - &mut *self.ctx.gas_meter.borrow_mut(), + &mut self.ctx.gas_meter.borrow_mut(), self.ctx.write_log, iter, ) @@ -354,63 +354,49 @@ where &self, key: &Key, ) -> Result, storage_api::Error> { - vp_env::read_temp( - &mut *self.gas_meter.borrow_mut(), - self.write_log, - key, - ) - .map(|data| data.and_then(|t| T::try_from_slice(&t[..]).ok())) - .into_storage_result() + vp_env::read_temp(&mut self.gas_meter.borrow_mut(), self.write_log, key) + .map(|data| data.and_then(|t| T::try_from_slice(&t[..]).ok())) + .into_storage_result() } fn read_bytes_temp( &self, key: &Key, ) -> Result>, storage_api::Error> { - vp_env::read_temp( - &mut *self.gas_meter.borrow_mut(), - self.write_log, - key, - ) - .into_storage_result() + vp_env::read_temp(&mut self.gas_meter.borrow_mut(), self.write_log, key) + .into_storage_result() } fn get_chain_id(&'view self) -> Result { - vp_env::get_chain_id(&mut *self.gas_meter.borrow_mut(), self.storage) + vp_env::get_chain_id(&mut self.gas_meter.borrow_mut(), self.storage) .into_storage_result() } fn get_block_height( &'view self, ) -> Result { - vp_env::get_block_height( - &mut *self.gas_meter.borrow_mut(), - self.storage, - ) - .into_storage_result() + vp_env::get_block_height(&mut self.gas_meter.borrow_mut(), self.storage) + .into_storage_result() } fn get_block_hash(&'view self) -> Result { - vp_env::get_block_hash(&mut *self.gas_meter.borrow_mut(), self.storage) + vp_env::get_block_hash(&mut self.gas_meter.borrow_mut(), self.storage) .into_storage_result() } fn get_block_epoch(&'view self) -> Result { - vp_env::get_block_epoch(&mut *self.gas_meter.borrow_mut(), self.storage) + vp_env::get_block_epoch(&mut self.gas_meter.borrow_mut(), self.storage) .into_storage_result() } fn get_tx_index(&'view self) -> Result { - vp_env::get_tx_index(&mut *self.gas_meter.borrow_mut(), self.tx_index) + vp_env::get_tx_index(&mut self.gas_meter.borrow_mut(), self.tx_index) .into_storage_result() } fn get_native_token(&'view self) -> Result { - vp_env::get_native_token( - &mut *self.gas_meter.borrow_mut(), - self.storage, - ) - .into_storage_result() + vp_env::get_native_token(&mut self.gas_meter.borrow_mut(), self.storage) + .into_storage_result() } fn iter_prefix( @@ -418,7 +404,7 @@ where prefix: &Key, ) -> Result { vp_env::iter_prefix( - &mut *self.gas_meter.borrow_mut(), + &mut self.gas_meter.borrow_mut(), self.storage, prefix, ) @@ -430,7 +416,7 @@ where prefix: &Key, ) -> Result { vp_env::rev_iter_prefix( - &mut *self.gas_meter.borrow_mut(), + &mut self.gas_meter.borrow_mut(), self.storage, prefix, ) @@ -463,7 +449,7 @@ where self.address, self.storage, self.write_log, - &mut *self.gas_meter.borrow_mut(), + &mut self.gas_meter.borrow_mut(), self.tx, self.tx_index, &mut iterators, @@ -509,7 +495,7 @@ where } fn get_tx_code_hash(&self) -> Result { - vp_env::get_tx_code_hash(&mut *self.gas_meter.borrow_mut(), self.tx) + vp_env::get_tx_code_hash(&mut self.gas_meter.borrow_mut(), self.tx) .into_storage_result() } diff --git a/shared/src/ledger/pos/storage.rs b/shared/src/ledger/pos/storage.rs index b6175f316d..0be7600822 100644 --- a/shared/src/ledger/pos/storage.rs +++ b/shared/src/ledger/pos/storage.rs @@ -46,14 +46,7 @@ pub fn params_key() -> Key { /// Is storage key for PoS parameters? pub fn is_params_key(key: &Key) -> bool { - match &key.segments[..] { - [DbKeySeg::AddressSeg(addr), DbKeySeg::StringSeg(key)] - if addr == &ADDRESS && key == PARAMS_STORAGE_KEY => - { - true - } - _ => false, - } + matches!(&key.segments[..], [DbKeySeg::AddressSeg(addr), DbKeySeg::StringSeg(key)] if addr == &ADDRESS && key == PARAMS_STORAGE_KEY) } /// Storage key prefix for validator data. @@ -326,14 +319,7 @@ pub fn validator_set_key() -> Key { /// Is storage key for a validator set? pub fn is_validator_set_key(key: &Key) -> bool { - match &key.segments[..] { - [DbKeySeg::AddressSeg(addr), DbKeySeg::StringSeg(key)] - if addr == &ADDRESS && key == VALIDATOR_SET_STORAGE_KEY => - { - true - } - _ => false, - } + matches!(&key.segments[..], [DbKeySeg::AddressSeg(addr), DbKeySeg::StringSeg(key)] if addr == &ADDRESS && key == VALIDATOR_SET_STORAGE_KEY) } /// Storage key for total deltas of all validators. @@ -345,14 +331,9 @@ pub fn total_deltas_key() -> Key { /// Is storage key for total deltas of all validators? pub fn is_total_deltas_key(key: &Key) -> bool { - match &key.segments[..] { - [DbKeySeg::AddressSeg(addr), DbKeySeg::StringSeg(key)] - if addr == &ADDRESS && key == TOTAL_DELTAS_STORAGE_KEY => - { - true - } - _ => false, - } + matches!(&key.segments[..], + [DbKeySeg::AddressSeg(addr), DbKeySeg::StringSeg(key)] + if addr == &ADDRESS && key == TOTAL_DELTAS_STORAGE_KEY) } /// Get validator address from bond key diff --git a/shared/src/ledger/storage/merkle_tree.rs b/shared/src/ledger/storage/merkle_tree.rs index 4ac2201bbe..49afb3dcfc 100644 --- a/shared/src/ledger/storage/merkle_tree.rs +++ b/shared/src/ledger/storage/merkle_tree.rs @@ -283,7 +283,7 @@ impl MerkleTree { let sub_root = self.tree_mut(store_type).subtree_update(key, value)?; // update the base tree with the updated sub root without hashing if *store_type != StoreType::Base { - let base_key = H::hash(&store_type.to_string()); + let base_key = H::hash(store_type.to_string()); self.base.update(base_key.into(), sub_root)?; } Ok(()) @@ -310,7 +310,7 @@ impl MerkleTree { let (store_type, sub_key) = StoreType::sub_key(key)?; let sub_root = self.tree_mut(&store_type).subtree_delete(&sub_key)?; if store_type != StoreType::Base { - let base_key = H::hash(&store_type.to_string()); + let base_key = H::hash(store_type.to_string()); self.base.update(base_key.into(), sub_root)?; } Ok(()) diff --git a/shared/src/ledger/storage/mod.rs b/shared/src/ledger/storage/mod.rs index 54a07efb13..571d33b4ab 100644 --- a/shared/src/ledger/storage/mod.rs +++ b/shared/src/ledger/storage/mod.rs @@ -541,7 +541,7 @@ where // but with gas and storage bytes len diff accounting tracing::debug!("storage write key {}", key,); let value = value.as_ref(); - self.block.tree.update(key, &value)?; + self.block.tree.update(key, value)?; let len = value.len(); let gas = key.len() + len; @@ -1084,7 +1084,7 @@ where // gas and storage bytes len diff accounting, because it can only be // used by the protocol that has a direct mutable access to storage let val = val.as_ref(); - self.block.tree.update(key, &val).into_storage_result()?; + self.block.tree.update(key, val).into_storage_result()?; let _ = self .db .write_subspace_val(self.block.height, key, val) @@ -1226,14 +1226,14 @@ mod tests { max_expected_time_per_block in Just(max_expected_time_per_block), start_height in Just(start_height), start_time in Just(start_time), - block_height in start_height + 1..(start_height + 2 * min_num_of_blocks as u64), + block_height in start_height + 1..(start_height + 2 * min_num_of_blocks), block_time in start_time + 1..(start_time + 2 * min_duration), // Delta will be applied on the `min_num_of_blocks` parameter min_blocks_delta in -(min_num_of_blocks as i64 - 1)..5, // Delta will be applied on the `min_duration` parameter - min_duration_delta in -(min_duration as i64 - 1)..50, + min_duration_delta in -(min_duration - 1)..50, // Delta will be applied on the `max_expected_time_per_block` parameter - max_time_per_block_delta in -(max_expected_time_per_block as i64 - 1)..50, + max_time_per_block_delta in -(max_expected_time_per_block - 1)..50, ) -> (EpochDuration, i64, BlockHeight, DateTimeUtc, BlockHeight, DateTimeUtc, i64, i64, i64) { let epoch_duration = EpochDuration { @@ -1289,7 +1289,7 @@ mod tests { // Test for 1. if block_height.0 - start_height.0 - >= epoch_duration.min_num_of_blocks as u64 + >= epoch_duration.min_num_of_blocks && time::duration_passed( block_time, start_time, diff --git a/shared/src/proto/types.rs b/shared/src/proto/types.rs index ed3f66f75e..f2df360051 100644 --- a/shared/src/proto/types.rs +++ b/shared/src/proto/types.rs @@ -109,7 +109,7 @@ where let to_sign = data .try_to_vec() .expect("Encoding data for signing shouldn't fail"); - let sig = common::SigScheme::sign(keypair, &to_sign); + let sig = common::SigScheme::sign(keypair, to_sign); Self { data, sig } } @@ -271,7 +271,7 @@ impl Tx { /// Sign a transaction using [`SignedTxData`]. pub fn sign(self, keypair: &common::SecretKey) -> Self { let to_sign = self.hash(); - let sig = common::SigScheme::sign(keypair, &to_sign); + let sig = common::SigScheme::sign(keypair, to_sign); let signed = SignedTxData { data: self.data, sig, diff --git a/shared/src/types/governance.rs b/shared/src/types/governance.rs index 899ef477a0..a7de68c8ff 100644 --- a/shared/src/types/governance.rs +++ b/shared/src/types/governance.rs @@ -224,9 +224,9 @@ impl OfflineProposal { tally_epoch_serialized, ] .concat(); - let proposal_data_hash = Hash::sha256(&proposal_serialized); + let proposal_data_hash = Hash::sha256(proposal_serialized); let signature = - common::SigScheme::sign(signing_key, &proposal_data_hash); + common::SigScheme::sign(signing_key, proposal_data_hash); Self { content: proposal.content, author: proposal.author, @@ -261,7 +261,7 @@ impl OfflineProposal { tally_epoch_serialized, ] .concat(); - Hash::sha256(&proposal_serialized) + Hash::sha256(proposal_serialized) } } @@ -297,7 +297,7 @@ impl OfflineVote { .expect("Conversion to bytes shouldn't fail."); let vote_serialized = &[proposal_hash_data, proposal_vote_data].concat(); - let signature = common::SigScheme::sign(signing_key, &vote_serialized); + let signature = common::SigScheme::sign(signing_key, vote_serialized); Self { proposal_hash, vote, diff --git a/shared/src/types/token.rs b/shared/src/types/token.rs index 967010dc92..1cbc7d9674 100644 --- a/shared/src/types/token.rs +++ b/shared/src/types/token.rs @@ -329,17 +329,12 @@ pub fn is_any_token_balance_key(key: &Key) -> Option<&Address> { /// Check if the given storage key is a masp key pub fn is_masp_key(key: &Key) -> bool { - match &key.segments[..] { + matches!(&key.segments[..], [DbKeySeg::AddressSeg(addr), DbKeySeg::StringSeg(key)] if *addr == masp() && (key == HEAD_TX_KEY || key.starts_with(TX_KEY_PREFIX) - || key.starts_with(PIN_KEY_PREFIX)) => - { - true - } - _ => false, - } + || key.starts_with(PIN_KEY_PREFIX))) } /// Check if the given storage key is multitoken balance key for the given diff --git a/shared/src/vm/wasm/run.rs b/shared/src/vm/wasm/run.rs index cc8e189d32..103f92a75c 100644 --- a/shared/src/vm/wasm/run.rs +++ b/shared/src/vm/wasm/run.rs @@ -52,7 +52,8 @@ pub enum Error { #[error("Failed running wasm with: {0}")] RuntimeError(wasmer::RuntimeError), #[error("Failed instantiating wasm module with: {0}")] - InstantiationError(wasmer::InstantiationError), + // Boxed cause it's 128b + InstantiationError(Box), #[error( "Unexpected module entrypoint interface {entrypoint}, failed with: \ {error}" @@ -115,7 +116,7 @@ where // Instantiate the wasm module let instance = wasmer::Instance::new(&module, &imports) - .map_err(Error::InstantiationError)?; + .map_err(|e| Error::InstantiationError(Box::new(e)))?; // We need to write the inputs in the memory exported from the wasm // module @@ -183,7 +184,7 @@ where validate_untrusted_wasm(vp_code).map_err(Error::ValidationError)?; // Compile the wasm module - let (module, store) = vp_wasm_cache.fetch_or_compile(&vp_code)?; + let (module, store) = vp_wasm_cache.fetch_or_compile(vp_code)?; let mut iterators: PrefixIterators<'_, DB> = PrefixIterators::default(); let mut result_buffer: Option> = None; @@ -240,7 +241,7 @@ fn run_vp( // Instantiate the wasm module let instance = wasmer::Instance::new(&module, &vp_imports) - .map_err(Error::InstantiationError)?; + .map_err(|e| Error::InstantiationError(Box::new(e)))?; // We need to write the inputs in the memory exported from the wasm // module diff --git a/tests/src/e2e/helpers.rs b/tests/src/e2e/helpers.rs index 96b957e18c..1060bdb63f 100644 --- a/tests/src/e2e/helpers.rs +++ b/tests/src/e2e/helpers.rs @@ -52,7 +52,7 @@ pub fn get_actor_rpc(test: &Test, who: &Who) -> String { Who::Validator(_) => TendermintMode::Validator, }; let config = - Config::load(&base_dir, &test.net.chain_id, Some(tendermint_mode)); + Config::load(base_dir, &test.net.chain_id, Some(tendermint_mode)); config.ledger.tendermint.rpc_address.to_string() } diff --git a/tests/src/e2e/ibc_tests.rs b/tests/src/e2e/ibc_tests.rs index 5aac8e41ef..2433d29186 100644 --- a/tests/src/e2e/ibc_tests.rs +++ b/tests/src/e2e/ibc_tests.rs @@ -800,7 +800,7 @@ fn transfer_back( "{}/{}/{}", port_channel_id_b.port_id, port_channel_id_b.channel_id, xan ); - let hash = calc_hash(&denom_raw); + let hash = calc_hash(denom_raw); let ibc_token = Address::Internal(InternalAddress::IbcToken(hash)); // Need the address prefix for ibc-transfer command let sub_prefix = format!( @@ -1133,8 +1133,7 @@ fn check_tx_height(test: &Test, client: &mut AnomaCmd) -> Result { .rsplit_once(' ') .unwrap() .1 - .replace('"', "") - .replace(',', ""); + .replace(['"', ','], ""); let height = height_str.parse().unwrap(); let (_unread, matched) = client.exp_regex("\"code\": .*,")?; @@ -1143,8 +1142,7 @@ fn check_tx_height(test: &Test, client: &mut AnomaCmd) -> Result { .rsplit_once(' ') .unwrap() .1 - .replace('"', "") - .replace(',', ""); + .replace(['"', ','], ""); if code != "0" { return Err(eyre!( "The IBC transfer transaction failed: unread {}", @@ -1299,7 +1297,7 @@ fn check_balances( "{}/{}/{}", &dest_port_channel_id.port_id, &dest_port_channel_id.channel_id, &token, ); - let key_prefix = ibc_token_prefix(&denom)?; + let key_prefix = ibc_token_prefix(denom)?; let sub_prefix = key_prefix.sub_key().unwrap().to_string(); let rpc_b = get_actor_rpc(test_b, &Who::Validator(0)); let query_args = vec![ @@ -1409,7 +1407,7 @@ fn check_balances_after_back( "{}/{}/{}", &dest_port_channel_id.port_id, &dest_port_channel_id.channel_id, &token, ); - let key_prefix = ibc_token_prefix(&denom)?; + let key_prefix = ibc_token_prefix(denom)?; let sub_prefix = key_prefix.sub_key().unwrap().to_string(); let rpc_b = get_actor_rpc(test_b, &Who::Validator(0)); let query_args = vec![ diff --git a/tests/src/e2e/ledger_tests.rs b/tests/src/e2e/ledger_tests.rs index f211b42d47..71ea121c4e 100644 --- a/tests/src/e2e/ledger_tests.rs +++ b/tests/src/e2e/ledger_tests.rs @@ -8,6 +8,7 @@ //! //! To keep the temporary files created by a test, use env var //! `ANOMA_E2E_KEEP_TEMP=true`. +#![allow(clippy::type_complexity)] use std::path::PathBuf; use std::process::Command; @@ -182,7 +183,7 @@ fn test_anoma_shuts_down_if_tendermint_dies() -> Result<()> { // 2. Kill the tendermint node sleep(1); Command::new("pkill") - .args(&["tendermint"]) + .args(["tendermint"]) .spawn() .expect("Test failed") .wait() @@ -2676,7 +2677,7 @@ fn proposal_offline() -> Result<()> { client.assert_success(); let expected_file_name = format!("proposal-vote-{}", albert); - let expected_path_vote = test.test_dir.path().join(&expected_file_name); + let expected_path_vote = test.test_dir.path().join(expected_file_name); assert!(expected_path_vote.exists()); // 4. Compute offline tally @@ -2827,7 +2828,7 @@ fn test_genesis_validators() -> Result<()> { validator_1_alias, ); let config = std::fs::read_to_string( - &namada_apps::client::utils::validator_pre_genesis_file( + namada_apps::client::utils::validator_pre_genesis_file( &validator_1_pre_genesis_dir, ), ) @@ -3142,7 +3143,7 @@ fn double_signing_gets_slashed() -> Result<()> { let validator_0_base_dir_copy = test.test_dir.path().join("validator-0-copy"); fs_extra::dir::copy( - &validator_0_base_dir, + validator_0_base_dir, &validator_0_base_dir_copy, &fs_extra::dir::CopyOptions { copy_inside: true, diff --git a/tests/src/e2e/setup.rs b/tests/src/e2e/setup.rs index 19c496d1fd..7548b15495 100644 --- a/tests/src/e2e/setup.rs +++ b/tests/src/e2e/setup.rs @@ -400,7 +400,7 @@ impl Test { args, timeout_sec, &self.working_dir, - &base_dir, + base_dir, mode, loc, ) @@ -687,7 +687,7 @@ where .env("TM_LOG_LEVEL", "info") .env("ANOMA_LOG_COLOR", "false") .current_dir(working_dir) - .args(&[ + .args([ "--base-dir", &base_dir.as_ref().to_string_lossy(), "--mode", @@ -716,7 +716,7 @@ where let mut rng = rand::thread_rng(); let log_dir = base_dir.as_ref().join("logs"); fs::create_dir_all(&log_dir)?; - log_dir.join(&format!( + log_dir.join(format!( "{}-{}-{}.log", SystemTime::now() .duration_since(UNIX_EPOCH) @@ -877,8 +877,8 @@ pub fn copy_wasm_to_chain_dir<'a>( let target_wasm_dir = chain_dir.join(config::DEFAULT_WASM_DIR); for file in &wasm_files { std::fs::copy( - working_dir.join("wasm").join(&file), - target_wasm_dir.join(&file), + working_dir.join("wasm").join(file), + target_wasm_dir.join(file), ) .unwrap(); } @@ -892,8 +892,8 @@ pub fn copy_wasm_to_chain_dir<'a>( .join(chain_id.as_str()) .join(config::DEFAULT_WASM_DIR); for file in &wasm_files { - let src = working_dir.join("wasm").join(&file); - let dst = target_wasm_dir.join(&file); + let src = working_dir.join("wasm").join(file); + let dst = target_wasm_dir.join(file); std::fs::copy(&src, &dst) .wrap_err_with(|| { format!( @@ -919,7 +919,7 @@ pub fn get_all_wasms_hashes( checksums .values() .filter_map(|wasm| { - if wasm.contains(&filter_prefix) { + if wasm.contains(filter_prefix) { Some( wasm.split('.').collect::>()[1] .to_owned() diff --git a/tests/src/storage_api/collections/nested_lazy_map.rs b/tests/src/storage_api/collections/nested_lazy_map.rs index 037decce46..9951eb318b 100644 --- a/tests/src/storage_api/collections/nested_lazy_map.rs +++ b/tests/src/storage_api/collections/nested_lazy_map.rs @@ -428,8 +428,8 @@ mod tests { |mut acc, (middle, inner_map)| { acc.extend( inner_map - .into_iter() - .map(|(inner, _)| (outer, middle, inner)), + .into_keys() + .map(|inner| (outer, middle, inner)), ); acc }, diff --git a/tests/src/vm_host_env/mod.rs b/tests/src/vm_host_env/mod.rs index 8b1512f915..f4bf4e7358 100644 --- a/tests/src/vm_host_env/mod.rs +++ b/tests/src/vm_host_env/mod.rs @@ -1280,7 +1280,7 @@ mod tests { writes.extend(channel_writes); // the origin-specific token let denom = format!("{}/{}/{}", port_id, channel_id, token); - let key_prefix = ibc_storage::ibc_token_prefix(&denom).unwrap(); + let key_prefix = ibc_storage::ibc_token_prefix(denom).unwrap(); let key = token::multitoken_balance_key(&key_prefix, &sender); let init_bal = Amount::from(1_000_000_000u64); writes.insert(key, init_bal.try_to_vec().unwrap()); @@ -1338,7 +1338,7 @@ mod tests { writes.extend(channel_writes); // the origin-specific token let denom = format!("{}/{}/{}", port_id, channel_id, token); - let key_prefix = ibc_storage::ibc_token_prefix(&denom).unwrap(); + let key_prefix = ibc_storage::ibc_token_prefix(denom).unwrap(); let key = token::multitoken_balance_key(&key_prefix, &receiver); let init_bal = Amount::from(1_000_000_000u64); writes.insert(key, init_bal.try_to_vec().unwrap()); diff --git a/tests/src/vm_host_env/tx.rs b/tests/src/vm_host_env/tx.rs index feedf98fd7..5fd6975c50 100644 --- a/tests/src/vm_host_env/tx.rs +++ b/tests/src/vm_host_env/tx.rs @@ -252,7 +252,7 @@ mod native_tx_host_env { `tx_host_env::init()`)", ) .as_mut(); - f(&mut *env) + f(&mut env) }) } diff --git a/tests/src/vm_host_env/vp.rs b/tests/src/vm_host_env/vp.rs index f82b0cd3c1..53219e7e43 100644 --- a/tests/src/vm_host_env/vp.rs +++ b/tests/src/vm_host_env/vp.rs @@ -152,7 +152,7 @@ mod native_vp_host_env { `vp_host_env::init()`)", ) .as_mut(); - f(&mut *env) + f(&mut env) }) } diff --git a/tx_prelude/src/proof_of_stake.rs b/tx_prelude/src/proof_of_stake.rs index b2acb8d6e2..490f019052 100644 --- a/tx_prelude/src/proof_of_stake.rs +++ b/tx_prelude/src/proof_of_stake.rs @@ -182,7 +182,7 @@ impl namada_proof_of_stake::PosActions for Ctx { key: &Self::Address, value: Decimal, ) -> Result<(), Self::Error> { - self.write(&validator_max_commission_rate_change_key(key), &value) + self.write(&validator_max_commission_rate_change_key(key), value) } fn write_validator_deltas( diff --git a/wasm/rust-toolchain.toml b/wasm/rust-toolchain.toml index 6ee193d7cb..2bf2af8c51 100644 --- a/wasm/rust-toolchain.toml +++ b/wasm/rust-toolchain.toml @@ -1,3 +1,3 @@ [toolchain] -channel = "1.61.0" +channel = "1.65.0" components = ["rustc", "cargo", "rust-std", "rust-docs", "rls", "rust-analysis"]