我试图在一个单元测试中改变时代:
如果我在子状态存储上使用TransactionExecutor,似乎无法改变它的时代:
use radix_engine::ledger::*;
use radix_engine::transaction::*;
use scrypto::prelude::*;
#[test]
fn can_tick_from_scratch() {
let mut ledger = InMemorySubstateStore::with_bootstrap();
ledger.set_epoch(15);
let mut executor = TransactionExecutor::new(&mut ledger, false);
// Run transactions
// ...
ledger.set_epoch(16);
// Run other transactions
// ...
}errorE0499:不能一次不止一次以可变的形式借用
ledger--> test/lib.rs: 16 :5让mut执行器= TransactionExecutor::new(&mut分类帐,false);x^第二个可变借入发生在这里,发生在这里
如何改变传递给InMemorySubstateStore的TransactionExecutor的时代?
发布于 2022-05-25 10:25:56
在将InMemorySubstateStore变量传递给TransactionExecutor之后,确实不能直接修改它。您要做的是更改执行者的substate_store状态:
use radix_engine::ledger::*;
use radix_engine::transaction::*;
use scrypto::prelude::*;
#[test]
fn can_tick_from_scratch() {
let mut ledger = InMemorySubstateStore::with_bootstrap();
ledger.set_epoch(15);
let mut executor = TransactionExecutor::new(&mut ledger, false);
// Run transactions
// ...
executor.substate_store_mut().set_epoch(16);
// Run other transactions
// ...
}https://stackoverflow.com/questions/72375904
复制相似问题