Skip to content

Commit 73159f7

Browse files
Fix new lints required by Rust 1.83 (#606)
* cargo fix all new 1.83 lints except for static_mut_refs * use LazyLock for CONTEXT * allow static_mut_refs for wallet storage paths * bump MSRV to 1.82 and use the recent is_none_or
1 parent ea6b83e commit 73159f7

File tree

55 files changed

+94
-128
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

55 files changed

+94
-128
lines changed

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ members = [
6262
]
6363

6464
[workspace.package]
65-
rust-version = "1.81.0"
65+
rust-version = "1.82.0"
6666
version = "0.15.3"
6767
authors = ["Kaspa developers"]
6868
license = "ISC"

cli/src/modules/history.rs

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -86,15 +86,7 @@ impl History {
8686
}
8787
};
8888
let length = ids.size_hint().0;
89-
let skip = if let Some(last) = last {
90-
if last > length {
91-
0
92-
} else {
93-
length - last
94-
}
95-
} else {
96-
0
97-
};
89+
let skip = if let Some(last) = last { length.saturating_sub(last) } else { 0 };
9890
let mut index = 0;
9991
let page = 25;
10092

consensus/client/src/header.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -266,7 +266,7 @@ impl Header {
266266

267267
impl TryCastFromJs for Header {
268268
type Error = Error;
269-
fn try_cast_from<'a, R>(value: &'a R) -> Result<Cast<Self>, Self::Error>
269+
fn try_cast_from<'a, R>(value: &'a R) -> Result<Cast<'a, Self>, Self::Error>
270270
where
271271
R: AsRef<JsValue> + 'a,
272272
{

consensus/client/src/input.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,7 @@ impl AsRef<TransactionInput> for TransactionInput {
200200

201201
impl TryCastFromJs for TransactionInput {
202202
type Error = Error;
203-
fn try_cast_from<'a, R>(value: &'a R) -> std::result::Result<Cast<Self>, Self::Error>
203+
fn try_cast_from<'a, R>(value: &'a R) -> std::result::Result<Cast<'a, Self>, Self::Error>
204204
where
205205
R: AsRef<JsValue> + 'a,
206206
{

consensus/client/src/output.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ impl From<&TransactionOutput> for cctx::TransactionOutput {
139139

140140
impl TryCastFromJs for TransactionOutput {
141141
type Error = Error;
142-
fn try_cast_from<'a, R>(value: &'a R) -> std::result::Result<Cast<Self>, Self::Error>
142+
fn try_cast_from<'a, R>(value: &'a R) -> std::result::Result<Cast<'a, Self>, Self::Error>
143143
where
144144
R: AsRef<JsValue> + 'a,
145145
{

consensus/client/src/transaction.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -280,7 +280,7 @@ impl Transaction {
280280

281281
impl TryCastFromJs for Transaction {
282282
type Error = Error;
283-
fn try_cast_from<'a, R>(value: &'a R) -> std::result::Result<Cast<Self>, Self::Error>
283+
fn try_cast_from<'a, R>(value: &'a R) -> std::result::Result<Cast<'a, Self>, Self::Error>
284284
where
285285
R: AsRef<JsValue> + 'a,
286286
{

consensus/client/src/utxo.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -282,7 +282,7 @@ impl TryIntoUtxoEntryReferences for JsValue {
282282

283283
impl TryCastFromJs for UtxoEntry {
284284
type Error = Error;
285-
fn try_cast_from<'a, R>(value: &'a R) -> Result<Cast<Self>, Self::Error>
285+
fn try_cast_from<'a, R>(value: &'a R) -> Result<Cast<'a, Self>, Self::Error>
286286
where
287287
R: AsRef<JsValue> + 'a,
288288
{
@@ -405,7 +405,7 @@ impl TryFrom<JsValue> for UtxoEntries {
405405

406406
impl TryCastFromJs for UtxoEntryReference {
407407
type Error = Error;
408-
fn try_cast_from<'a, R>(value: &'a R) -> Result<Cast<Self>, Self::Error>
408+
fn try_cast_from<'a, R>(value: &'a R) -> Result<Cast<'a, Self>, Self::Error>
409409
where
410410
R: AsRef<JsValue> + 'a,
411411
{

consensus/core/src/config/constants.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ pub mod consensus {
3636

3737
/// Size of the **sampled** median time window (independent of BPS)
3838
pub const MEDIAN_TIME_SAMPLED_WINDOW_SIZE: u64 =
39-
((2 * NEW_TIMESTAMP_DEVIATION_TOLERANCE - 1) + PAST_MEDIAN_TIME_SAMPLE_INTERVAL - 1) / PAST_MEDIAN_TIME_SAMPLE_INTERVAL;
39+
(2 * NEW_TIMESTAMP_DEVIATION_TOLERANCE - 1).div_ceil(PAST_MEDIAN_TIME_SAMPLE_INTERVAL);
4040

4141
//
4242
// ~~~~~~~~~~~~~~~~~~~~~~~~~ Max difficulty target ~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -71,8 +71,7 @@ pub mod consensus {
7171
pub const DIFFICULTY_WINDOW_SAMPLE_INTERVAL: u64 = 4;
7272

7373
/// Size of the **sampled** difficulty window (independent of BPS)
74-
pub const DIFFICULTY_SAMPLED_WINDOW_SIZE: u64 =
75-
(NEW_DIFFICULTY_WINDOW_DURATION + DIFFICULTY_WINDOW_SAMPLE_INTERVAL - 1) / DIFFICULTY_WINDOW_SAMPLE_INTERVAL;
74+
pub const DIFFICULTY_SAMPLED_WINDOW_SIZE: u64 = NEW_DIFFICULTY_WINDOW_DURATION.div_ceil(DIFFICULTY_WINDOW_SAMPLE_INTERVAL);
7675

7776
//
7877
// ~~~~~~~~~~~~~~~~~~~ Finality & Pruning ~~~~~~~~~~~~~~~~~~~

consensus/core/src/network.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -344,7 +344,7 @@ impl Serialize for NetworkId {
344344

345345
struct NetworkIdVisitor;
346346

347-
impl<'de> de::Visitor<'de> for NetworkIdVisitor {
347+
impl de::Visitor<'_> for NetworkIdVisitor {
348348
type Value = NetworkId;
349349

350350
fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
@@ -413,7 +413,7 @@ impl TryFrom<JsValue> for NetworkId {
413413

414414
impl TryCastFromJs for NetworkId {
415415
type Error = NetworkIdError;
416-
fn try_cast_from<'a, R>(value: &'a R) -> Result<Cast<Self>, Self::Error>
416+
fn try_cast_from<'a, R>(value: &'a R) -> Result<Cast<'a, Self>, Self::Error>
417417
where
418418
R: AsRef<JsValue> + 'a,
419419
{

consensus/core/src/tx.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -321,7 +321,7 @@ impl<'a, T: VerifiableTransaction> Iterator for PopulatedInputIterator<'a, T> {
321321
}
322322
}
323323

324-
impl<'a, T: VerifiableTransaction> ExactSizeIterator for PopulatedInputIterator<'a, T> {}
324+
impl<T: VerifiableTransaction> ExactSizeIterator for PopulatedInputIterator<'_, T> {}
325325

326326
/// Represents a read-only referenced transaction along with fully populated UTXO entry data
327327
pub struct PopulatedTransaction<'a> {
@@ -336,7 +336,7 @@ impl<'a> PopulatedTransaction<'a> {
336336
}
337337
}
338338

339-
impl<'a> VerifiableTransaction for PopulatedTransaction<'a> {
339+
impl VerifiableTransaction for PopulatedTransaction<'_> {
340340
fn tx(&self) -> &Transaction {
341341
self.tx
342342
}
@@ -368,7 +368,7 @@ impl<'a> ValidatedTransaction<'a> {
368368
}
369369
}
370370

371-
impl<'a> VerifiableTransaction for ValidatedTransaction<'a> {
371+
impl VerifiableTransaction for ValidatedTransaction<'_> {
372372
fn tx(&self) -> &Transaction {
373373
self.tx
374374
}

consensus/core/src/tx/script_public_key.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ impl Serialize for ScriptPublicKey {
9494
}
9595
}
9696

97-
impl<'de: 'a, 'a> Deserialize<'de> for ScriptPublicKey {
97+
impl<'de> Deserialize<'de> for ScriptPublicKey {
9898
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
9999
where
100100
D: Deserializer<'de>,
@@ -374,7 +374,7 @@ impl BorshDeserialize for ScriptPublicKey {
374374
type CastError = workflow_wasm::error::Error;
375375
impl TryCastFromJs for ScriptPublicKey {
376376
type Error = workflow_wasm::error::Error;
377-
fn try_cast_from<'a, R>(value: &'a R) -> Result<Cast<Self>, Self::Error>
377+
fn try_cast_from<'a, R>(value: &'a R) -> Result<Cast<'a, Self>, Self::Error>
378378
where
379379
R: AsRef<JsValue> + 'a,
380380
{

consensus/src/model/services/reachability.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,6 @@ impl<T: ReachabilityStoreReader + ?Sized> MTReachabilityService<T> {
154154
/// a compromise where the lock is released every constant number of items.
155155
///
156156
/// TODO: decide if these alternatives require overall system benchmarking
157-
158157
struct BackwardChainIterator<T: ReachabilityStoreReader + ?Sized> {
159158
store: Arc<RwLock<T>>,
160159
current: Option<Hash>,

consensus/src/model/stores/ghostdag.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ impl GhostdagData {
116116
pub fn ascending_mergeset_without_selected_parent<'a>(
117117
&'a self,
118118
store: &'a (impl GhostdagStoreReader + ?Sized),
119-
) -> impl Iterator<Item = SortableBlock> + '_ {
119+
) -> impl Iterator<Item = SortableBlock> + 'a {
120120
self.mergeset_blues
121121
.iter()
122122
.skip(1) // Skip the selected parent
@@ -139,7 +139,7 @@ impl GhostdagData {
139139
pub fn descending_mergeset_without_selected_parent<'a>(
140140
&'a self,
141141
store: &'a (impl GhostdagStoreReader + ?Sized),
142-
) -> impl Iterator<Item = SortableBlock> + '_ {
142+
) -> impl Iterator<Item = SortableBlock> + 'a {
143143
self.mergeset_blues
144144
.iter()
145145
.skip(1) // Skip the selected parent
@@ -175,15 +175,15 @@ impl GhostdagData {
175175
pub fn consensus_ordered_mergeset<'a>(
176176
&'a self,
177177
store: &'a (impl GhostdagStoreReader + ?Sized),
178-
) -> impl Iterator<Item = Hash> + '_ {
178+
) -> impl Iterator<Item = Hash> + 'a {
179179
once(self.selected_parent).chain(self.ascending_mergeset_without_selected_parent(store).map(|s| s.hash))
180180
}
181181

182182
/// Returns an iterator to the mergeset in topological consensus order without the selected parent
183183
pub fn consensus_ordered_mergeset_without_selected_parent<'a>(
184184
&'a self,
185185
store: &'a (impl GhostdagStoreReader + ?Sized),
186-
) -> impl Iterator<Item = Hash> + '_ {
186+
) -> impl Iterator<Item = Hash> + 'a {
187187
self.ascending_mergeset_without_selected_parent(store).map(|s| s.hash)
188188
}
189189

consensus/src/model/stores/relations.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ pub struct StagingRelationsStore<'a> {
145145
children_deletions: BlockHashMap<BlockHashSet>,
146146
}
147147

148-
impl<'a> ChildrenStore for StagingRelationsStore<'a> {
148+
impl ChildrenStore for StagingRelationsStore<'_> {
149149
fn insert_child(&mut self, _writer: impl DbWriter, parent: Hash, child: Hash) -> Result<(), StoreError> {
150150
self.check_not_in_entry_deletions(parent)?;
151151
self.check_not_in_children_deletions(parent, child)?; // We expect deletion to be permanent

consensus/src/model/stores/utxo_diffs.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ use rocksdb::WriteBatch;
1414
/// blocks. However, once the diff is computed, it is permanent. This store has a relation to
1515
/// block status, such that if a block has status `StatusUTXOValid` then it is expected to have
1616
/// utxo diff data as well as utxo multiset data and acceptance data.
17-
1817
pub trait UtxoDiffsStoreReader {
1918
fn get(&self, hash: Hash) -> Result<Arc<UtxoDiff>, StoreError>;
2019
}

consensus/src/pipeline/body_processor/body_validation_in_context.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ use crate::{
77
use kaspa_consensus_core::block::Block;
88
use kaspa_database::prelude::StoreResultExtensions;
99
use kaspa_hashes::Hash;
10-
use kaspa_utils::option::OptionExtensions;
1110
use std::sync::Arc;
1211

1312
impl BlockBodyProcessor {
@@ -45,7 +44,7 @@ impl BlockBodyProcessor {
4544
.copied()
4645
.filter(|parent| {
4746
let status_option = statuses_read_guard.get(*parent).unwrap_option();
48-
status_option.is_none_or_ex(|s| !s.has_block_body())
47+
status_option.is_none_or(|s| !s.has_block_body())
4948
})
5049
.collect();
5150
if !missing.is_empty() {

consensus/src/processes/coinbase.rs

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ impl CoinbaseManager {
7272
// Precomputed subsidy by month table for the actual block per second rate
7373
// Here values are rounded up so that we keep the same number of rewarding months as in the original 1 BPS table.
7474
// In a 10 BPS network, the induced increase in total rewards is 51 KAS (see tests::calc_high_bps_total_rewards_delta())
75-
let subsidy_by_month_table: SubsidyByMonthTable = core::array::from_fn(|i| (SUBSIDY_BY_MONTH_TABLE[i] + bps - 1) / bps);
75+
let subsidy_by_month_table: SubsidyByMonthTable = core::array::from_fn(|i| SUBSIDY_BY_MONTH_TABLE[i].div_ceil(bps));
7676
Self {
7777
coinbase_payload_script_public_key_max_len,
7878
max_coinbase_payload_len,
@@ -288,10 +288,7 @@ mod tests {
288288
let total_rewards: u64 = pre_deflationary_rewards + SUBSIDY_BY_MONTH_TABLE.iter().map(|x| x * SECONDS_PER_MONTH).sum::<u64>();
289289
let testnet_11_bps = TESTNET11_PARAMS.bps();
290290
let total_high_bps_rewards_rounded_up: u64 = pre_deflationary_rewards
291-
+ SUBSIDY_BY_MONTH_TABLE
292-
.iter()
293-
.map(|x| ((x + testnet_11_bps - 1) / testnet_11_bps * testnet_11_bps) * SECONDS_PER_MONTH)
294-
.sum::<u64>();
291+
+ SUBSIDY_BY_MONTH_TABLE.iter().map(|x| (x.div_ceil(testnet_11_bps) * testnet_11_bps) * SECONDS_PER_MONTH).sum::<u64>();
295292

296293
let cbm = create_manager(&TESTNET11_PARAMS);
297294
let total_high_bps_rewards: u64 =
@@ -316,7 +313,7 @@ mod tests {
316313
let cbm = create_manager(&network_id.into());
317314
cbm.subsidy_by_month_table.iter().enumerate().for_each(|(i, x)| {
318315
assert_eq!(
319-
(SUBSIDY_BY_MONTH_TABLE[i] + cbm.bps() - 1) / cbm.bps(),
316+
SUBSIDY_BY_MONTH_TABLE[i].div_ceil(cbm.bps()),
320317
*x,
321318
"{}: locally computed and precomputed values must match",
322319
network_id
@@ -376,7 +373,7 @@ mod tests {
376373
Test {
377374
name: "after 32 halvings",
378375
daa_score: params.deflationary_phase_daa_score + 32 * blocks_per_halving,
379-
expected: ((DEFLATIONARY_PHASE_INITIAL_SUBSIDY / 2_u64.pow(32)) + cbm.bps() - 1) / cbm.bps(),
376+
expected: (DEFLATIONARY_PHASE_INITIAL_SUBSIDY / 2_u64.pow(32)).div_ceil(cbm.bps()),
380377
},
381378
Test {
382379
name: "just before subsidy depleted",

consensus/src/processes/pruning.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ use crate::model::{
1313
},
1414
};
1515
use kaspa_hashes::Hash;
16-
use kaspa_utils::option::OptionExtensions;
1716
use parking_lot::RwLock;
1817

1918
#[derive(Clone)]
@@ -213,7 +212,7 @@ impl<
213212
let mut expected_pps_queue = VecDeque::new();
214213
for current in self.reachability_service.backward_chain_iterator(hst, pruning_info.pruning_point, false) {
215214
let current_header = self.headers_store.get_header(current).unwrap();
216-
if expected_pps_queue.back().is_none_or_ex(|&&h| h != current_header.pruning_point) {
215+
if expected_pps_queue.back().is_none_or(|&h| h != current_header.pruning_point) {
217216
expected_pps_queue.push_back(current_header.pruning_point);
218217
}
219218
}

consensus/src/processes/sync/mod.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ use kaspa_consensus_core::errors::sync::{SyncManagerError, SyncManagerResult};
55
use kaspa_database::prelude::StoreResultExtensions;
66
use kaspa_hashes::Hash;
77
use kaspa_math::uint::malachite_base::num::arithmetic::traits::CeilingLogBase2;
8-
use kaspa_utils::option::OptionExtensions;
98
use parking_lot::RwLock;
109

1110
use crate::model::{
@@ -191,7 +190,7 @@ impl<
191190
}
192191
}
193192

194-
if highest_with_body.is_none_or_ex(|&h| h == high) {
193+
if highest_with_body.is_none_or(|h| h == high) {
195194
return Ok(vec![]);
196195
};
197196

consensus/src/test_helpers.rs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ pub fn block_from_precomputed_hash(hash: Hash, parents: Vec<Hash>) -> Block {
1919
pub fn generate_random_utxos_from_script_public_key_pool(
2020
rng: &mut SmallRng,
2121
amount: usize,
22-
script_public_key_pool: &Vec<ScriptPublicKey>,
22+
script_public_key_pool: &[ScriptPublicKey],
2323
) -> UtxoCollection {
2424
let mut i = 0;
2525
let mut collection = UtxoCollection::with_capacity(amount);
@@ -40,10 +40,7 @@ pub fn generate_random_outpoint(rng: &mut SmallRng) -> TransactionOutpoint {
4040
TransactionOutpoint::new(generate_random_hash(rng), rng.gen::<u32>())
4141
}
4242

43-
pub fn generate_random_utxo_from_script_public_key_pool(
44-
rng: &mut SmallRng,
45-
script_public_key_pool: &Vec<ScriptPublicKey>,
46-
) -> UtxoEntry {
43+
pub fn generate_random_utxo_from_script_public_key_pool(rng: &mut SmallRng, script_public_key_pool: &[ScriptPublicKey]) -> UtxoEntry {
4744
UtxoEntry::new(
4845
rng.gen_range(1..100_000), //we choose small amounts as to not overflow with large utxosets.
4946
script_public_key_pool.choose(rng).expect("expected_script_public key").clone(),

core/src/task/runtime.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,14 +50,13 @@ impl AsyncRuntime {
5050
}
5151

5252
/// Launch a tokio Runtime and run the top-level async objects
53-
5453
pub fn worker(self: &Arc<AsyncRuntime>, core: Arc<Core>) {
55-
return tokio::runtime::Builder::new_multi_thread()
54+
tokio::runtime::Builder::new_multi_thread()
5655
.worker_threads(self.threads)
5756
.enable_all()
5857
.build()
5958
.expect("Failed building the Runtime")
60-
.block_on(async { self.worker_impl(core).await });
59+
.block_on(async { self.worker_impl(core).await })
6160
}
6261

6362
pub async fn worker_impl(self: &Arc<AsyncRuntime>, core: Arc<Core>) {

crypto/addresses/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -506,7 +506,7 @@ impl<'de> Deserialize<'de> for Address {
506506

507507
impl TryCastFromJs for Address {
508508
type Error = AddressError;
509-
fn try_cast_from<'a, R>(value: &'a R) -> Result<Cast<Self>, Self::Error>
509+
fn try_cast_from<'a, R>(value: &'a R) -> Result<Cast<'a, Self>, Self::Error>
510510
where
511511
R: AsRef<JsValue> + 'a,
512512
{

crypto/hashes/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ impl Hash {
187187
type TryFromError = workflow_wasm::error::Error;
188188
impl TryCastFromJs for Hash {
189189
type Error = TryFromError;
190-
fn try_cast_from<'a, R>(value: &'a R) -> Result<Cast<Self>, Self::Error>
190+
fn try_cast_from<'a, R>(value: &'a R) -> Result<Cast<'a, Self>, Self::Error>
191191
where
192192
R: AsRef<JsValue> + 'a,
193193
{

crypto/muhash/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ pub struct MuHashElementBuilder<'a> {
146146
element_hasher: MuHashElementHash,
147147
}
148148

149-
impl<'a> HasherBase for MuHashElementBuilder<'a> {
149+
impl HasherBase for MuHashElementBuilder<'_> {
150150
fn update<A: AsRef<[u8]>>(&mut self, data: A) -> &mut Self {
151151
self.element_hasher.write(data);
152152
self

crypto/txscript/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,7 @@ impl<'a, T: VerifiableTransaction, Reused: SigHashReusedValues> TxScriptEngine<'
230230

231231
#[inline]
232232
pub fn is_executing(&self) -> bool {
233-
return self.cond_stack.is_empty() || *self.cond_stack.last().expect("Checked not empty") == OpCond::True;
233+
self.cond_stack.is_empty() || *self.cond_stack.last().expect("Checked not empty") == OpCond::True
234234
}
235235

236236
fn execute_opcode(&mut self, opcode: DynOpcodeImplementation<T, Reused>) -> Result<(), TxScriptError> {

0 commit comments

Comments
 (0)