use std::collections::BTreeMap;
use bytes::Bytes;
use vapory_types::{H256, U256};
#[derive(Debug, PartialEq, Eq, Clone)]
pub enum Diff<T> {
Same,
Born(T),
Changed(T, T),
Died(T),
}
impl<T> Diff<T> {
pub fn new(pre: T, post: T) -> Self where T: Eq {
if pre == post {
Diff::Same
} else {
Diff::Changed(pre, post)
}
}
pub fn is_same(&self) -> bool {
match *self {
Diff::Same => true,
_ => false
}
}
}
#[derive(Debug, PartialEq, Eq, Clone)]
pub struct AccountDiff {
pub balance: Diff<U256>,
pub nonce: Diff<U256>,
pub code: Diff<Bytes>,
pub storage: BTreeMap<H256, Diff<H256>>,
}