pub fn transactional<S, C, T>(
    storage: &mut S,
    callback: C
) -> Result<T, StdError> where
    S: Storage,
    C: FnOnce(&mut StorageTransaction<'_, S>) -> Result<T, StdError>,