pub struct IndexeddbCryptoStore { /* private fields */ }
Expand description
An implementation of CryptoStore that uses IndexedDB for persistent storage.
Implementations§
source§impl IndexeddbCryptoStore
impl IndexeddbCryptoStore
sourcepub async fn open() -> Result<Self, IndexeddbCryptoStoreError>
pub async fn open() -> Result<Self, IndexeddbCryptoStoreError>
Open a new IndexeddbCryptoStore
with default name and no passphrase
sourcepub async fn open_with_passphrase(
prefix: &str,
passphrase: &str
) -> Result<Self, IndexeddbCryptoStoreError>
pub async fn open_with_passphrase( prefix: &str, passphrase: &str ) -> Result<Self, IndexeddbCryptoStoreError>
Open a new IndexeddbCryptoStore
with given name and passphrase
sourcepub async fn open_with_name(
name: &str
) -> Result<Self, IndexeddbCryptoStoreError>
pub async fn open_with_name( name: &str ) -> Result<Self, IndexeddbCryptoStoreError>
Open a new IndexeddbCryptoStore
with given name and no passphrase
Trait Implementations§
source§impl CryptoStore for IndexeddbCryptoStore
impl CryptoStore for IndexeddbCryptoStore
§type Error = IndexeddbCryptoStoreError
type Error = IndexeddbCryptoStoreError
The error type used by this crypto store.
source§fn save_pending_changes<'life0, 'async_trait>(
&'life0 self,
changes: PendingChanges
) -> Pin<Box<dyn Future<Output = Result<(), IndexeddbCryptoStoreError>> + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn save_pending_changes<'life0, 'async_trait>(
&'life0 self,
changes: PendingChanges
) -> Pin<Box<dyn Future<Output = Result<(), IndexeddbCryptoStoreError>> + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Save the set of changes to the store. Read more
source§fn save_changes<'life0, 'async_trait>(
&'life0 self,
changes: Changes
) -> Pin<Box<dyn Future<Output = Result<(), IndexeddbCryptoStoreError>> + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn save_changes<'life0, 'async_trait>(
&'life0 self,
changes: Changes
) -> Pin<Box<dyn Future<Output = Result<(), IndexeddbCryptoStoreError>> + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Save the set of changes to the store. Read more
source§fn load_tracked_users<'life0, 'async_trait>(
&'life0 self
) -> Pin<Box<dyn Future<Output = Result<Vec<TrackedUser>, IndexeddbCryptoStoreError>> + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn load_tracked_users<'life0, 'async_trait>(
&'life0 self
) -> Pin<Box<dyn Future<Output = Result<Vec<TrackedUser>, IndexeddbCryptoStoreError>> + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Load the list of users whose devices we are keeping track of.
source§fn get_outbound_group_session<'life0, 'life1, 'async_trait>(
&'life0 self,
room_id: &'life1 RoomId
) -> Pin<Box<dyn Future<Output = Result<Option<OutboundGroupSession>, IndexeddbCryptoStoreError>> + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get_outbound_group_session<'life0, 'life1, 'async_trait>(
&'life0 self,
room_id: &'life1 RoomId
) -> Pin<Box<dyn Future<Output = Result<Option<OutboundGroupSession>, IndexeddbCryptoStoreError>> + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Get the outbound group session we have stored that is used for the
given room.
source§fn get_outgoing_secret_requests<'life0, 'life1, 'async_trait>(
&'life0 self,
request_id: &'life1 TransactionId
) -> Pin<Box<dyn Future<Output = Result<Option<GossipRequest>, IndexeddbCryptoStoreError>> + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get_outgoing_secret_requests<'life0, 'life1, 'async_trait>(
&'life0 self,
request_id: &'life1 TransactionId
) -> Pin<Box<dyn Future<Output = Result<Option<GossipRequest>, IndexeddbCryptoStoreError>> + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Get an outgoing secret request that we created that matches the given
request id. Read more
source§fn load_account<'life0, 'async_trait>(
&'life0 self
) -> Pin<Box<dyn Future<Output = Result<Option<Account>, IndexeddbCryptoStoreError>> + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn load_account<'life0, 'async_trait>(
&'life0 self
) -> Pin<Box<dyn Future<Output = Result<Option<Account>, IndexeddbCryptoStoreError>> + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Load an account that was previously stored.
source§fn next_batch_token<'life0, 'async_trait>(
&'life0 self
) -> Pin<Box<dyn Future<Output = Result<Option<String>, IndexeddbCryptoStoreError>> + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn next_batch_token<'life0, 'async_trait>(
&'life0 self
) -> Pin<Box<dyn Future<Output = Result<Option<String>, IndexeddbCryptoStoreError>> + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Load the next-batch token for a to-device query, if any.
source§fn load_identity<'life0, 'async_trait>(
&'life0 self
) -> Pin<Box<dyn Future<Output = Result<Option<PrivateCrossSigningIdentity>, IndexeddbCryptoStoreError>> + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn load_identity<'life0, 'async_trait>(
&'life0 self
) -> Pin<Box<dyn Future<Output = Result<Option<PrivateCrossSigningIdentity>, IndexeddbCryptoStoreError>> + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Try to load a private cross signing identity, if one is stored.
source§fn get_sessions<'life0, 'life1, 'async_trait>(
&'life0 self,
sender_key: &'life1 str
) -> Pin<Box<dyn Future<Output = Result<Option<Arc<Mutex<Vec<Session>>>>, IndexeddbCryptoStoreError>> + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get_sessions<'life0, 'life1, 'async_trait>(
&'life0 self,
sender_key: &'life1 str
) -> Pin<Box<dyn Future<Output = Result<Option<Arc<Mutex<Vec<Session>>>>, IndexeddbCryptoStoreError>> + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Get all the sessions that belong to the given sender key. Read more
source§fn get_inbound_group_session<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
room_id: &'life1 RoomId,
session_id: &'life2 str
) -> Pin<Box<dyn Future<Output = Result<Option<InboundGroupSession>, IndexeddbCryptoStoreError>> + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn get_inbound_group_session<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
room_id: &'life1 RoomId,
session_id: &'life2 str
) -> Pin<Box<dyn Future<Output = Result<Option<InboundGroupSession>, IndexeddbCryptoStoreError>> + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Get the inbound group session from our store. Read more
source§fn get_inbound_group_sessions<'life0, 'async_trait>(
&'life0 self
) -> Pin<Box<dyn Future<Output = Result<Vec<InboundGroupSession>, IndexeddbCryptoStoreError>> + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_inbound_group_sessions<'life0, 'async_trait>(
&'life0 self
) -> Pin<Box<dyn Future<Output = Result<Vec<InboundGroupSession>, IndexeddbCryptoStoreError>> + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Get all the inbound group sessions we have stored.
source§fn inbound_group_session_counts<'life0, 'async_trait>(
&'life0 self
) -> Pin<Box<dyn Future<Output = Result<RoomKeyCounts, IndexeddbCryptoStoreError>> + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn inbound_group_session_counts<'life0, 'async_trait>(
&'life0 self
) -> Pin<Box<dyn Future<Output = Result<RoomKeyCounts, IndexeddbCryptoStoreError>> + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Get the number inbound group sessions we have and how many of them are
backed up.
source§fn inbound_group_sessions_for_backup<'life0, 'async_trait>(
&'life0 self,
limit: usize
) -> Pin<Box<dyn Future<Output = Result<Vec<InboundGroupSession>, IndexeddbCryptoStoreError>> + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn inbound_group_sessions_for_backup<'life0, 'async_trait>(
&'life0 self,
limit: usize
) -> Pin<Box<dyn Future<Output = Result<Vec<InboundGroupSession>, IndexeddbCryptoStoreError>> + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Get all the inbound group sessions we have not backed up yet.
source§fn mark_inbound_group_sessions_as_backed_up<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
room_and_session_ids: &'life1 [(&'life2 RoomId, &'life3 str)]
) -> Pin<Box<dyn Future<Output = Result<(), IndexeddbCryptoStoreError>> + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
fn mark_inbound_group_sessions_as_backed_up<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
room_and_session_ids: &'life1 [(&'life2 RoomId, &'life3 str)]
) -> Pin<Box<dyn Future<Output = Result<(), IndexeddbCryptoStoreError>> + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
Mark the inbound group sessions with the supplied room and session IDs
as backed up
source§fn reset_backup_state<'life0, 'async_trait>(
&'life0 self
) -> Pin<Box<dyn Future<Output = Result<(), IndexeddbCryptoStoreError>> + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn reset_backup_state<'life0, 'async_trait>(
&'life0 self
) -> Pin<Box<dyn Future<Output = Result<(), IndexeddbCryptoStoreError>> + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Reset the backup state of all the stored inbound group sessions.
source§fn save_tracked_users<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
users: &'life1 [(&'life2 UserId, bool)]
) -> Pin<Box<dyn Future<Output = Result<(), IndexeddbCryptoStoreError>> + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn save_tracked_users<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
users: &'life1 [(&'life2 UserId, bool)]
) -> Pin<Box<dyn Future<Output = Result<(), IndexeddbCryptoStoreError>> + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Save a list of users and their respective dirty/outdated flags to the
store.
source§fn get_device<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
user_id: &'life1 UserId,
device_id: &'life2 DeviceId
) -> Pin<Box<dyn Future<Output = Result<Option<ReadOnlyDevice>, IndexeddbCryptoStoreError>> + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn get_device<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
user_id: &'life1 UserId,
device_id: &'life2 DeviceId
) -> Pin<Box<dyn Future<Output = Result<Option<ReadOnlyDevice>, IndexeddbCryptoStoreError>> + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Get the device for the given user with the given device ID. Read more
source§fn get_user_devices<'life0, 'life1, 'async_trait>(
&'life0 self,
user_id: &'life1 UserId
) -> Pin<Box<dyn Future<Output = Result<HashMap<OwnedDeviceId, ReadOnlyDevice>, IndexeddbCryptoStoreError>> + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get_user_devices<'life0, 'life1, 'async_trait>(
&'life0 self,
user_id: &'life1 UserId
) -> Pin<Box<dyn Future<Output = Result<HashMap<OwnedDeviceId, ReadOnlyDevice>, IndexeddbCryptoStoreError>> + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Get all the devices of the given user. Read more
source§fn get_user_identity<'life0, 'life1, 'async_trait>(
&'life0 self,
user_id: &'life1 UserId
) -> Pin<Box<dyn Future<Output = Result<Option<ReadOnlyUserIdentities>, IndexeddbCryptoStoreError>> + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get_user_identity<'life0, 'life1, 'async_trait>(
&'life0 self,
user_id: &'life1 UserId
) -> Pin<Box<dyn Future<Output = Result<Option<ReadOnlyUserIdentities>, IndexeddbCryptoStoreError>> + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Get the user identity that is attached to the given user id. Read more
source§fn is_message_known<'life0, 'life1, 'async_trait>(
&'life0 self,
hash: &'life1 OlmMessageHash
) -> Pin<Box<dyn Future<Output = Result<bool, IndexeddbCryptoStoreError>> + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn is_message_known<'life0, 'life1, 'async_trait>(
&'life0 self,
hash: &'life1 OlmMessageHash
) -> Pin<Box<dyn Future<Output = Result<bool, IndexeddbCryptoStoreError>> + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Check if a hash for an Olm message stored in the database.
source§fn get_secrets_from_inbox<'life0, 'life1, 'async_trait>(
&'life0 self,
secret_name: &'life1 SecretName
) -> Pin<Box<dyn Future<Output = Result<Vec<GossippedSecret>, IndexeddbCryptoStoreError>> + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get_secrets_from_inbox<'life0, 'life1, 'async_trait>(
&'life0 self,
secret_name: &'life1 SecretName
) -> Pin<Box<dyn Future<Output = Result<Vec<GossippedSecret>, IndexeddbCryptoStoreError>> + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Get all the secrets with the given [
SecretName
] we have currently
stored.source§fn delete_secrets_from_inbox<'life0, 'life1, 'async_trait>(
&'life0 self,
secret_name: &'life1 SecretName
) -> Pin<Box<dyn Future<Output = Result<(), IndexeddbCryptoStoreError>> + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn delete_secrets_from_inbox<'life0, 'life1, 'async_trait>(
&'life0 self,
secret_name: &'life1 SecretName
) -> Pin<Box<dyn Future<Output = Result<(), IndexeddbCryptoStoreError>> + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Delete all the secrets with the given [
SecretName
] we have currently
stored.source§fn get_secret_request_by_info<'life0, 'life1, 'async_trait>(
&'life0 self,
key_info: &'life1 SecretInfo
) -> Pin<Box<dyn Future<Output = Result<Option<GossipRequest>, IndexeddbCryptoStoreError>> + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get_secret_request_by_info<'life0, 'life1, 'async_trait>(
&'life0 self,
key_info: &'life1 SecretInfo
) -> Pin<Box<dyn Future<Output = Result<Option<GossipRequest>, IndexeddbCryptoStoreError>> + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Get an outgoing key request that we created that matches the given
requested key info. Read more
source§fn get_unsent_secret_requests<'life0, 'async_trait>(
&'life0 self
) -> Pin<Box<dyn Future<Output = Result<Vec<GossipRequest>, IndexeddbCryptoStoreError>> + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_unsent_secret_requests<'life0, 'async_trait>(
&'life0 self
) -> Pin<Box<dyn Future<Output = Result<Vec<GossipRequest>, IndexeddbCryptoStoreError>> + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Get all outgoing secret requests that we have in the store.
source§fn delete_outgoing_secret_requests<'life0, 'life1, 'async_trait>(
&'life0 self,
request_id: &'life1 TransactionId
) -> Pin<Box<dyn Future<Output = Result<(), IndexeddbCryptoStoreError>> + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn delete_outgoing_secret_requests<'life0, 'life1, 'async_trait>(
&'life0 self,
request_id: &'life1 TransactionId
) -> Pin<Box<dyn Future<Output = Result<(), IndexeddbCryptoStoreError>> + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Delete an outgoing key request that we created that matches the given
request id. Read more
source§fn load_backup_keys<'life0, 'async_trait>(
&'life0 self
) -> Pin<Box<dyn Future<Output = Result<BackupKeys, IndexeddbCryptoStoreError>> + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn load_backup_keys<'life0, 'async_trait>(
&'life0 self
) -> Pin<Box<dyn Future<Output = Result<BackupKeys, IndexeddbCryptoStoreError>> + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Get the backup keys we have stored.
source§fn get_withheld_info<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
room_id: &'life1 RoomId,
session_id: &'life2 str
) -> Pin<Box<dyn Future<Output = Result<Option<RoomKeyWithheldEvent>, IndexeddbCryptoStoreError>> + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn get_withheld_info<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
room_id: &'life1 RoomId,
session_id: &'life2 str
) -> Pin<Box<dyn Future<Output = Result<Option<RoomKeyWithheldEvent>, IndexeddbCryptoStoreError>> + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Get withheld info for this key.
Allows to know if the session was not sent on purpose.
This only returns withheld info sent by the owner of the group session,
not the one you can get from a response to a key request from
another of your device.
source§fn get_room_settings<'life0, 'life1, 'async_trait>(
&'life0 self,
room_id: &'life1 RoomId
) -> Pin<Box<dyn Future<Output = Result<Option<RoomSettings>, IndexeddbCryptoStoreError>> + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get_room_settings<'life0, 'life1, 'async_trait>(
&'life0 self,
room_id: &'life1 RoomId
) -> Pin<Box<dyn Future<Output = Result<Option<RoomSettings>, IndexeddbCryptoStoreError>> + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Get the room settings, such as the encryption algorithm or whether to
encrypt only for trusted devices. Read more
source§fn get_custom_value<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 str
) -> Pin<Box<dyn Future<Output = Result<Option<Vec<u8>>, IndexeddbCryptoStoreError>> + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get_custom_value<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 str
) -> Pin<Box<dyn Future<Output = Result<Option<Vec<u8>>, IndexeddbCryptoStoreError>> + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Get arbitrary data from the store Read more
source§fn set_custom_value<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 str,
value: Vec<u8>
) -> Pin<Box<dyn Future<Output = Result<(), IndexeddbCryptoStoreError>> + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn set_custom_value<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 str,
value: Vec<u8>
) -> Pin<Box<dyn Future<Output = Result<(), IndexeddbCryptoStoreError>> + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Put arbitrary data into the store Read more
source§fn remove_custom_value<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 str
) -> Pin<Box<dyn Future<Output = Result<(), IndexeddbCryptoStoreError>> + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn remove_custom_value<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 str
) -> Pin<Box<dyn Future<Output = Result<(), IndexeddbCryptoStoreError>> + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Remove arbitrary data into the store Read more
source§fn try_take_leased_lock<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
lease_duration_ms: u32,
key: &'life1 str,
holder: &'life2 str
) -> Pin<Box<dyn Future<Output = Result<bool, IndexeddbCryptoStoreError>> + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn try_take_leased_lock<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
lease_duration_ms: u32,
key: &'life1 str,
holder: &'life2 str
) -> Pin<Box<dyn Future<Output = Result<bool, IndexeddbCryptoStoreError>> + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Try to take a leased lock. Read more
source§impl Debug for IndexeddbCryptoStore
impl Debug for IndexeddbCryptoStore
Auto Trait Implementations§
impl !RefUnwindSafe for IndexeddbCryptoStore
impl !Send for IndexeddbCryptoStore
impl !Sync for IndexeddbCryptoStore
impl Unpin for IndexeddbCryptoStore
impl !UnwindSafe for IndexeddbCryptoStore
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more