Rewrite iterator processing using unzip

Co-authored-by: Jane Lusby <jlusby42@gmail.com>
This commit is contained in:
teor 2020-11-26 11:56:57 +10:00
parent 91476535d3
commit d64c2976e3
1 changed files with 5 additions and 11 deletions

View File

@ -115,21 +115,15 @@ impl AdjustedDifficulty {
{
let candidate_height = (previous_block_height + 1).expect("next block height is valid");
// unzip would be a lot nicer here, but we can't satisfy its trait bounds
let context: Vec<_> = context
let (relevant_difficulty_thresholds, relevant_times) = context
.into_iter()
.take(POW_AVERAGING_WINDOW + POW_MEDIAN_BLOCK_SPAN)
.collect();
let relevant_difficulty_thresholds = context
.iter()
.map(|pair| pair.0)
.collect::<Vec<_>>()
.unzip::<_, _, Vec<_>, Vec<_>>();
let relevant_difficulty_thresholds = relevant_difficulty_thresholds
.try_into()
.expect("not enough context: difficulty adjustment needs at least 28 (PoWAveragingWindow + PoWMedianBlockSpan) headers");
let relevant_times = context
.iter()
.map(|pair| pair.1)
.collect::<Vec<_>>()
let relevant_times = relevant_times
.try_into()
.expect("not enough context: difficulty adjustment needs at least 28 (PoWAveragingWindow + PoWMedianBlockSpan) headers");