near_sdk/utils/storage_key_impl.rs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
/// Converts Self into a [`Vec<u8>`] that is used for a storage key through [`into_storage_key`].
///
/// [`into_storage_key`]: IntoStorageKey::into_storage_key
///
/// More information about storage is in [NEAR documentation](https://docs.near.org/build/smart-contracts/anatomy/storage).
pub trait IntoStorageKey {
/// Consumes self and returns [`Vec<u8>`] bytes which are used as a storage key.
fn into_storage_key(self) -> Vec<u8>;
}
impl IntoStorageKey for Vec<u8> {
#[inline]
fn into_storage_key(self) -> Vec<u8> {
self
}
}
impl<'a> IntoStorageKey for &'a [u8] {
#[inline]
fn into_storage_key(self) -> Vec<u8> {
self.to_vec()
}
}
impl<'a> IntoStorageKey for &'a [u8; 1] {
#[inline]
fn into_storage_key(self) -> Vec<u8> {
self.to_vec()
}
}
impl IntoStorageKey for u8 {
#[inline]
fn into_storage_key(self) -> Vec<u8> {
vec![self]
}
}