Address clippy lints in tree-states (#4414)

* Address some clippy lints

* Box errors to fix error size lint

* Add Default impl for Validator

* Address more clippy lints

* Re-implement `check_state_diff`

* Fix misc test compile errors
This commit is contained in:
Paul Hauner
2023-06-20 11:47:52 +10:00
committed by GitHub
parent 23db089a7a
commit d56cec83fc
26 changed files with 94 additions and 73 deletions

View File

@@ -2,7 +2,8 @@ use super::*;
use compare_fields::{CompareFields, Comparison, FieldComparison};
use std::fmt::Debug;
use std::path::{Path, PathBuf};
use types::{beacon_state::BeaconStateDiff, milhouse::diff::Diff, BeaconState};
use store::hdiff::{HDiff, HDiffBuffer};
use types::BeaconState;
pub const MAX_VALUE_STRING_LEN: usize = 500;
@@ -121,15 +122,28 @@ where
pub fn check_state_diff<T: EthSpec>(
pre_state: &BeaconState<T>,
opt_post_state: &Option<BeaconState<T>>,
spec: &ChainSpec,
) -> Result<(), Error> {
if let Some(post_state) = opt_post_state {
let diff = BeaconStateDiff::compute_diff(pre_state, post_state)
.expect("BeaconStateDiff should compute");
let mut diffed_state = pre_state.clone();
diff.apply_diff(&mut diffed_state)
.expect("BeaconStateDiff should apply");
// Produce a diff between the pre- and post-states.
let pre_state_buf = HDiffBuffer::from_state(pre_state.clone());
let post_state_buf = HDiffBuffer::from_state(post_state.clone());
let diff = HDiff::compute(&pre_state_buf, &post_state_buf).expect("HDiff should compute");
compare_result_detailed::<_, ()>(&Ok(diffed_state), opt_post_state)
// Apply the diff to the pre-state, ensuring the same post-state is
// regenerated.
let mut reconstructed_buf = HDiffBuffer::from_state(pre_state.clone());
diff.apply(&mut reconstructed_buf)
.expect("HDiff should apply");
let diffed_state = reconstructed_buf
.into_state(spec)
.expect("HDiffDiffer should convert to state");
// Drop the caches on the post-state to assist with equality checking.
let mut post_state_without_caches = post_state.clone();
post_state_without_caches.drop_all_caches().unwrap();
compare_result_detailed::<_, ()>(&Ok(diffed_state), &Some(post_state_without_caches))
} else {
Ok(())
}