Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit e869d40

Browse files
author
Jorge Olivero
committed
block_stream: use more combinators when parsing triggers
1 parent 5936c9e commit e869d40

File tree

1 file changed

+40
-40
lines changed

1 file changed

+40
-40
lines changed

datasource/ethereum/src/block_stream.rs

Lines changed: 40 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1351,56 +1351,56 @@ fn parse_log_triggers(
13511351
log_filter: Option<EthereumLogFilter>,
13521352
block: &EthereumBlock,
13531353
) -> Vec<EthereumTrigger> {
1354-
if log_filter.is_none() {
1355-
return vec![];
1356-
}
1357-
let log_filter = log_filter.unwrap();
1358-
block
1359-
.transaction_receipts
1360-
.iter()
1361-
.flat_map(move |receipt| {
1362-
let log_filter = log_filter.clone();
1363-
receipt
1364-
.logs
1365-
.iter()
1366-
.filter(move |log| log_filter.matches(log))
1367-
.map(move |log| EthereumTrigger::Log(log.clone()))
1368-
})
1369-
.collect()
1354+
log_filter.map_or(vec![], |log_filter| {
1355+
block
1356+
.transaction_receipts
1357+
.iter()
1358+
.flat_map(move |receipt| {
1359+
let log_filter = log_filter.clone();
1360+
receipt
1361+
.logs
1362+
.iter()
1363+
.filter(move |log| log_filter.matches(log))
1364+
.map(move |log| EthereumTrigger::Log(log.clone()))
1365+
})
1366+
.collect()
1367+
})
13701368
}
13711369

13721370
fn parse_call_triggers(
13731371
call_filter: Option<EthereumCallFilter>,
13741372
block: &EthereumBlockWithCalls,
13751373
) -> Vec<EthereumTrigger> {
1376-
if call_filter.is_none() || block.calls.is_none() {
1377-
return vec![];
1378-
}
1379-
let call_filter = call_filter.unwrap();
1380-
let calls = &block.calls.clone().unwrap();
1381-
calls
1382-
.iter()
1383-
.filter(move |call| call_filter.matches(call))
1384-
.map(move |call| EthereumTrigger::Call(call.clone()))
1385-
.collect()
1374+
call_filter.map_or(vec![], move |call_filter| {
1375+
block.calls.as_ref().map_or(vec![], |calls| {
1376+
calls
1377+
.iter()
1378+
.filter(move |call| call_filter.matches(call))
1379+
.map(move |call| EthereumTrigger::Call(call.clone()))
1380+
.collect()
1381+
})
1382+
})
13861383
}
13871384

13881385
fn parse_block_triggers(
13891386
block_filter: Option<EthereumBlockFilter>,
13901387
block: &EthereumBlockWithCalls,
13911388
) -> Vec<EthereumTrigger> {
1392-
if block_filter.is_none() {
1393-
return vec![];
1394-
}
1395-
let call_filter = EthereumCallFilter::from(block_filter.clone().unwrap());
1396-
let calls = &block.calls.clone().unwrap();
1397-
let mut triggers = calls
1398-
.iter()
1399-
.filter(move |call| call_filter.matches(call))
1400-
.map(move |call| EthereumTrigger::Block(EthereumBlockTriggerType::WithCallTo(call.to)))
1401-
.collect::<Vec<EthereumTrigger>>();
1402-
if block_filter.unwrap().trigger_every_block {
1403-
triggers.push(EthereumTrigger::Block(EthereumBlockTriggerType::Every));
1404-
}
1405-
triggers
1389+
block_filter.map_or(vec![], move |block_filter| {
1390+
let trigger_every_block = block_filter.trigger_every_block;
1391+
let call_filter = EthereumCallFilter::from(block_filter);
1392+
let mut triggers = block.calls.as_ref().map_or(vec![], |calls| {
1393+
calls
1394+
.iter()
1395+
.filter(move |call| call_filter.matches(call))
1396+
.map(move |call| {
1397+
EthereumTrigger::Block(EthereumBlockTriggerType::WithCallTo(call.to))
1398+
})
1399+
.collect::<Vec<EthereumTrigger>>()
1400+
});
1401+
if trigger_every_block {
1402+
triggers.push(EthereumTrigger::Block(EthereumBlockTriggerType::Every));
1403+
}
1404+
triggers
1405+
})
14061406
}

0 commit comments

Comments
 (0)