I am trying to understand the working of upgradeble storage used by openbrush libraries.
I am unable to understand Mapping used in impls of psp34 trait eg
pub operator_approvals: Mapping<(Owner, Operator, Option<Id>), (), ApprovalsKey>,
from storage of psp34 library given bellow
#[openbrush::upgradeable_storage(STORAGE_KEY)]
#[derive(Default, Debug)]
pub struct Data<B = balances::Balances>
where
B: Storable
+ AutoStorableHint<ManualKey<453953544, ManualKey<{ STORAGE_KEY }>>, Type = B>
+ StorableHint<ManualKey<{ STORAGE_KEY }>>,
{
pub token_owner: Mapping<Id, Owner>,
pub operator_approvals: Mapping<(Owner, Operator, Option<Id>), (), ApprovalsKey>,
pub balances: B,
pub _reserved: Option<()>,
}