pub fn key_changes<'a, S: Storage<H>, H: Hasher>(
	config: &'a Configuration,
	storage: &'a S,
	begin: u64,
	end: &'a AnchorBlockId<H::Out>,
	max: u64,
	key: &'a [u8],
) -> Result<DrilldownIterator<'a, S, S, H>, String> where H::Out: HeapSizeOf {
	// we can't query any roots before root
	let max = ::std::cmp::min(max, end.number);

	Ok(DrilldownIterator {
		essence: DrilldownIteratorEssence {
			key,
			roots_storage: storage,
			storage,
			begin,
			end,
			surface: surface_iterator(config, max, begin, end.number)?,

			extrinsics: Default::default(),
			blocks: Default::default(),

			_hasher: ::std::marker::PhantomData::<H>::default(),
		},
	})
}
/// Return changes of given key at given blocks range.
/// `max` is the number of best known block.
/// Changes are returned in descending order (i.e. last block comes first).
Return changes of given key at given blocks range.
`max` is the number of best known block.
Changes are returned in descending order .
Return changes of given key at given blocks range . ` max ` is the number of best known block . Changes are returned in descending order .
pub fn key_changes<'a, S: Storage<H>, H: Hasher>(
	config: &'a Configuration,
	storage: &'a S,
	begin: u64,
	end: &'a AnchorBlockId<H::Out>,
	max: u64,
	key: &'a [u8],
) -> Result<DrilldownIterator<'a, S, S, H>, String> where H::Out: HeapSizeOf {
	// we can't query any roots before root
	let max = ::std::cmp::min(max, end.number);
	Ok(DrilldownIterator {
		essence: DrilldownIteratorEssence {
			key,
			roots_storage: storage,
			storage,
			begin,
			end,
			surface: surface_iterator(config, max, begin, end.number)?,
			extrinsics: Default::default(),
			blocks: Default::default(),
			_hasher: ::std::marker::PhantomData::<H>::default(),
		},
	})
}
pub fn key_changes < ' a , S : Storage < H > , H : Hasher > ( config : & ' a Configuration , storage : & ' a S , begin : u64 , end : & ' a AnchorBlockId < H :: Out > , max : u64 , key : & ' a [ u8 ] , ) -> Result < DrilldownIterator < ' a , S , S , H > , String > where H :: Out : HeapSizeOf { // we can't query any roots before root let max = :: std :: cmp :: min ( max , end . number ) ; Ok ( DrilldownIterator { essence : DrilldownIteratorEssence { key , roots_storage : storage , storage , begin , end , surface : surface_iterator ( config , max , begin , end . number ) ? , extrinsics : Default :: default ( ) , blocks : Default :: default ( ) , _hasher : :: std :: marker :: PhantomData :: < H > :: default ( ) , } , } ) }
Return changes of given key at given blocks range.
Return changes of given key at given blocks range .
config
&'a Configuration
storage
&'a S
begin
u64
end
&'a AnchorBlockId<H::Out>
max
u64
key
&'a [u8]
config
&'a Configuration
storage
&'a S
begin
u64
end
&'a AnchorBlockId<H::Out>
max
u64
key
&'a [u8]