multiversx_sc/api/
storage_api.rs1use super::HandleTypeInfo;
2
3pub trait StorageReadApi: HandleTypeInfo {
4 type StorageReadApiImpl: StorageReadApiImpl
5 + HandleTypeInfo<
6 ManagedBufferHandle = Self::ManagedBufferHandle,
7 BigIntHandle = Self::BigIntHandle,
8 BigFloatHandle = Self::BigFloatHandle,
9 EllipticCurveHandle = Self::EllipticCurveHandle,
10 >;
11
12 fn storage_read_api_impl() -> Self::StorageReadApiImpl;
13}
14
15pub trait StorageReadApiImpl: HandleTypeInfo {
16 fn storage_read_api_init(&self) {}
17
18 fn storage_load_managed_buffer_raw(
19 &self,
20 key_handle: Self::ManagedBufferHandle,
21 dest: Self::ManagedBufferHandle,
22 );
23
24 fn storage_load_from_address(
25 &self,
26 address_handle: Self::ManagedBufferHandle,
27 key_handle: Self::ManagedBufferHandle,
28 dest: Self::ManagedBufferHandle,
29 );
30}
31
32pub trait StorageWriteApi: HandleTypeInfo {
33 type StorageWriteApiImpl: StorageWriteApiImpl
34 + HandleTypeInfo<
35 ManagedBufferHandle = Self::ManagedBufferHandle,
36 BigIntHandle = Self::BigIntHandle,
37 BigFloatHandle = Self::BigFloatHandle,
38 EllipticCurveHandle = Self::EllipticCurveHandle,
39 >;
40
41 fn storage_write_api_impl() -> Self::StorageWriteApiImpl;
42}
43
44pub trait StorageWriteApiImpl: HandleTypeInfo {
45 fn storage_store_managed_buffer_raw(
46 &self,
47 key_handle: Self::ManagedBufferHandle,
48 value_handle: Self::ManagedBufferHandle,
49 );
50}