Struct soroban_env_host::Host
source · pub struct Host(_);
Implementations§
source§impl Host
impl Host
pub fn ed25519_pub_key_from_bytesobj_input( &self, k: BytesObject ) -> Result<PublicKey, HostError>
pub fn sha256_hash_from_bytesobj_input( &self, x: BytesObject ) -> Result<Vec<u8>, HostError>
pub fn storage_key_from_scval( &self, key: ScVal ) -> Result<Rc<LedgerKey>, HostError>
pub fn contract_data_key_from_rawval( &self, k: RawVal ) -> Result<Rc<LedgerKey>, HostError>
source§impl Host
impl Host
pub fn contract_source_ledger_key( &self, contract_id: &Hash ) -> Result<Rc<LedgerKey>, HostError>
pub fn id_preimage_from_ed25519( &self, key: Uint256, salt: Uint256 ) -> Result<HashIdPreimage, HostError>
pub fn id_preimage_from_contract( &self, contract_id: Hash, salt: Uint256 ) -> Result<HashIdPreimage, HostError>
pub fn id_preimage_from_asset( &self, asset: Asset ) -> Result<HashIdPreimage, HostError>
pub fn id_preimage_from_source_account( &self, salt: Uint256 ) -> Result<HashIdPreimage, HostError>
pub fn create_contract_args_hash_preimage( &self, source: ScContractExecutable, salt: Uint256 ) -> Result<HashIdPreimage, HostError>
pub fn load_account( &self, account_id: AccountId ) -> Result<AccountEntry, HostError>
source§impl Host
impl Host
sourcepub fn err<T>(&self, src: T) -> HostErrorwhere
DebugError: From<T>,
pub fn err<T>(&self, src: T) -> HostErrorwhere DebugError: From<T>,
Records a debug-event from its input in as much detail as possible, then converts its input to a (often coarser-granularity) Status code, and then forms a HostError with it (which also captures a backtrace::Backtrace). This is the method you want to call any time there’s a finer-granularity error type that you want to log the details of and then downgrade fail with.
sourcepub fn err_status<T>(&self, status: T) -> HostErrorwhere
Status: From<T>,
pub fn err_status<T>(&self, status: T) -> HostErrorwhere Status: From<T>,
Helper for the simplest status-only error path.
sourcepub fn err_general(&self, msg: &'static str) -> HostError
pub fn err_general(&self, msg: &'static str) -> HostError
Helper for the simplest string + general-error path.
sourcepub fn err_status_msg<T>(&self, status: T, msg: &'static str) -> HostErrorwhere
Status: From<T>,
pub fn err_status_msg<T>(&self, status: T, msg: &'static str) -> HostErrorwhere Status: From<T>,
Helper for the next-simplest status-and-extended-debug-message error path.
sourcepub fn err_status_msg_with_args<T>(
&self,
status: T,
msg: &'static str,
args: &[RawVal]
) -> HostErrorwhere
Status: From<T>,
pub fn err_status_msg_with_args<T>( &self, status: T, msg: &'static str, args: &[RawVal] ) -> HostErrorwhere Status: From<T>,
Helper for the error message with status and an arbitrary number of args.
pub fn err_conversion_into_rawval<T>(&self, rv: RawVal) -> HostError
pub fn err_conversion_general(&self, msg: &'static str) -> HostError
sourcepub fn map_err<T, E>(&self, res: Result<T, E>) -> Result<T, HostError>where
DebugError: From<E>,
pub fn map_err<T, E>(&self, res: Result<T, E>) -> Result<T, HostError>where DebugError: From<E>,
Given a result carrying some error type that can be converted to a DebugError, calls self.err with it when there’s an error. Returns a result over HostError.
If you have an error type T you want to record as a detailed debug event
and a less-detailed Status code embedded in a HostError, add an impl From<T> for DebugError
over in the events module and call this
where the error is generated.
Note: we do not want to impl From<T> for HostError
for such types,
as doing so will avoid routing them through the host in order to record
their extended diagnostic information into the debug buffer. This means
you will wind up writing host.map_err(...)?
a bunch in code that you
used to be able to get away with just writing ...?
, there’s no way
around this if we want to record the diagnostic information.
source§impl Host
impl Host
sourcepub fn with_storage_and_budget(storage: Storage, budget: Budget) -> Self
pub fn with_storage_and_budget(storage: Storage, budget: Budget) -> Self
pub fn set_source_account(&self, source_account: AccountId)
pub fn remove_source_account(&self)
pub fn source_account(&self) -> Option<AccountId>
pub fn switch_to_recording_auth(&self)
pub fn set_ledger_info(&self, info: LedgerInfo)
pub fn with_ledger_info<F, T>(&self, f: F) -> Result<T, HostError>where F: FnOnce(&LedgerInfo) -> Result<T, HostError>,
pub fn with_mut_ledger_info<F>(&self, f: F) -> Result<(), HostError>where F: FnMut(&mut LedgerInfo),
sourcepub fn with_budget<T, F>(&self, f: F) -> Twhere
F: FnOnce(Budget) -> T,
pub fn with_budget<T, F>(&self, f: F) -> Twhere F: FnOnce(Budget) -> T,
pub fn budget_cloned(&self) -> Budget
pub fn charge_budget(&self, ty: CostType, input: u64) -> Result<(), HostError>
pub fn set_diagnostic_level(&self, diagnostic_level: DiagnosticLevel)
pub fn is_debug(&self) -> bool
sourcepub fn record_debug_event<T>(&self, src: T) -> Result<(), HostError>where
DebugEvent: From<T>,
pub fn record_debug_event<T>(&self, src: T) -> Result<(), HostError>where DebugEvent: From<T>,
Records a debug event. This in itself is not necessarily an error; it might just be some contextual event we want to put in a debug log for diagnostic purpopses. The return value from this is therefore () when the event is recorded successfully, even if the event itself represented some other error. This function only returns Err(…) when there was a failure to record the event, such as when budget is exceeded.
pub fn with_mut_storage<F, U>(&self, f: F) -> Result<U, HostError>where F: FnOnce(&mut Storage) -> Result<U, HostError>,
sourcepub fn try_finish(self) -> Result<(Storage, Budget, Events), (Self, HostError)>
pub fn try_finish(self) -> Result<(Storage, Budget, Events), (Self, HostError)>
Accept a unique (refcount = 1) host reference and destroy the
underlying [HostImpl
], returning its constituent components to the
caller as a tuple wrapped in Ok(...)
. If the provided host reference
is not unique, returns Err(self)
.
sourcepub fn with_test_contract_frame<F>(
&self,
id: Hash,
func: Symbol,
f: F
) -> Result<RawVal, HostError>where
F: FnOnce() -> Result<RawVal, HostError>,
pub fn with_test_contract_frame<F>( &self, id: Hash, func: Symbol, f: F ) -> Result<RawVal, HostError>where F: FnOnce() -> Result<RawVal, HostError>,
Pushes a test contract [Frame
], runs a closure, and then pops the
frame, rolling back if the closure returned an error. Returns the result
that the closure returned (or any error caused during the frame
push/pop). Used for testing.
sourcepub fn call_account_contract_check_auth(
&self,
contract: BytesObject,
args: VecObject
) -> Result<RawVal, HostError>
pub fn call_account_contract_check_auth( &self, contract: BytesObject, args: VecObject ) -> Result<RawVal, HostError>
Invokes the reserved __check_auth
function on a provided contract.
This is useful for testing the custom account contracts. Otherwise, the
host prohibits calling __check_auth
outside of internal implementation
of require_auth[_for_args]
calls.
pub fn inject_val(&self, v: &ScVal) -> Result<RawVal, HostError>
pub fn get_events(&self) -> Result<Events, HostError>
pub fn invoke_function(&self, hf: HostFunction) -> Result<ScVal, HostError>
pub fn register_test_contract( &self, contract_id: BytesObject, contract_fns: Rc<dyn ContractFunctionSet> ) -> Result<(), HostError>
pub fn add_ledger_entry( &self, key: &Rc<LedgerKey>, val: &Rc<LedgerEntry> ) -> Result<(), HostError>
sourcepub fn system_event(
&self,
topics: VecObject,
data: RawVal
) -> Result<RawVal, HostError>
pub fn system_event( &self, topics: VecObject, data: RawVal ) -> Result<RawVal, HostError>
Records a System
contract event. topics
is expected to be a SCVec
length <= 4 that cannot contain Vec
, Map
, or Bytes
with length > 32
On success, returns an SCStatus::Ok
.
pub fn get_recorded_auth_payloads( &self ) -> Result<Vec<RecordedAuthPayload>, HostError>
Trait Implementations§
source§impl Compare<AccessType> for Host
impl Compare<AccessType> for Host
source§impl Compare<AccountEntry> for Host
impl Compare<AccountEntry> for Host
source§impl Compare<ClaimableBalanceEntry> for Host
impl Compare<ClaimableBalanceEntry> for Host
source§impl Compare<ConfigSettingEntry> for Host
impl Compare<ConfigSettingEntry> for Host
source§impl Compare<ContractCodeEntry> for Host
impl Compare<ContractCodeEntry> for Host
source§impl Compare<LedgerEntryExt> for Host
impl Compare<LedgerEntryExt> for Host
source§impl Compare<LedgerKeyAccount> for Host
impl Compare<LedgerKeyAccount> for Host
source§impl Compare<LedgerKeyClaimableBalance> for Host
impl Compare<LedgerKeyClaimableBalance> for Host
source§impl Compare<LedgerKeyConfigSetting> for Host
impl Compare<LedgerKeyConfigSetting> for Host
source§impl Compare<LedgerKeyContractCode> for Host
impl Compare<LedgerKeyContractCode> for Host
source§impl Compare<LedgerKeyData> for Host
impl Compare<LedgerKeyData> for Host
source§impl Compare<LedgerKeyLiquidityPool> for Host
impl Compare<LedgerKeyLiquidityPool> for Host
source§impl Compare<LedgerKeyOffer> for Host
impl Compare<LedgerKeyOffer> for Host
source§impl Compare<LedgerKeyTrustLine> for Host
impl Compare<LedgerKeyTrustLine> for Host
source§impl Compare<LiquidityPoolEntry> for Host
impl Compare<LiquidityPoolEntry> for Host
source§impl<K, V> Compare<MeteredOrdMap<K, V, Host>> for Hostwhere
K: MeteredClone,
V: MeteredClone,
Host: Compare<K, Error = HostError> + Compare<V, Error = HostError>,
impl<K, V> Compare<MeteredOrdMap<K, V, Host>> for Hostwhere K: MeteredClone, V: MeteredClone, Host: Compare<K, Error = HostError> + Compare<V, Error = HostError>,
source§impl<Elt: MeteredClone> Compare<MeteredVector<Elt>> for Hostwhere
Host: Compare<Elt, Error = HostError>,
impl<Elt: MeteredClone> Compare<MeteredVector<Elt>> for Hostwhere Host: Compare<Elt, Error = HostError>,
source§impl Compare<OfferEntry> for Host
impl Compare<OfferEntry> for Host
source§impl Compare<ScContractExecutable> for Host
impl Compare<ScContractExecutable> for Host
source§impl Compare<ScNonceKey> for Host
impl Compare<ScNonceKey> for Host
source§impl Compare<TrustLineAsset> for Host
impl Compare<TrustLineAsset> for Host
source§impl Compare<TrustLineEntry> for Host
impl Compare<TrustLineEntry> for Host
source§impl EnvBase for Host
impl EnvBase for Host
§type Error = HostError
type Error = HostError
Infallible
(in the
Guest
) or HostError
(in the Host
). Read moresource§fn escalate_error_to_panic(&self, e: Self::Error) -> !
fn escalate_error_to_panic(&self, e: Self::Error) -> !
Host
.source§fn as_mut_any(&mut self) -> &mut dyn Any
fn as_mut_any(&mut self) -> &mut dyn Any
source§fn check_same_env(&self, other: &Self)
fn check_same_env(&self, other: &Self)
source§fn deep_clone(&self) -> Self
fn deep_clone(&self) -> Self
source§fn bytes_copy_from_slice(
&self,
b: BytesObject,
b_pos: U32Val,
slice: &[u8]
) -> Result<BytesObject, HostError>
fn bytes_copy_from_slice( &self, b: BytesObject, b_pos: U32Val, slice: &[u8] ) -> Result<BytesObject, HostError>
Bytes
object in the host, replacing the portion of
its memory with bytes supplied by slice
, returning the new object. The
replaced portion of the original object’s memory begins at b_pos
and
extends for the same length as the new slice
.source§fn bytes_copy_to_slice(
&self,
b: BytesObject,
b_pos: U32Val,
slice: &mut [u8]
) -> Result<(), HostError>
fn bytes_copy_to_slice( &self, b: BytesObject, b_pos: U32Val, slice: &mut [u8] ) -> Result<(), HostError>
Bytes
object in the host into a slice in
the caller’s memory.source§fn string_copy_to_slice(
&self,
b: StringObject,
b_pos: U32Val,
slice: &mut [u8]
) -> Result<(), HostError>
fn string_copy_to_slice( &self, b: StringObject, b_pos: U32Val, slice: &mut [u8] ) -> Result<(), HostError>
String
object in the host into a slice in
the caller’s memory.source§fn symbol_copy_to_slice(
&self,
s: SymbolObject,
b_pos: U32Val,
slice: &mut [u8]
) -> Result<(), HostError>
fn symbol_copy_to_slice( &self, s: SymbolObject, b_pos: U32Val, slice: &mut [u8] ) -> Result<(), HostError>
Symbol
object in the host into the
caller’s memory.source§fn bytes_new_from_slice(&self, mem: &[u8]) -> Result<BytesObject, HostError>
fn bytes_new_from_slice(&self, mem: &[u8]) -> Result<BytesObject, HostError>
Bytes
host object from a slice of client memory.source§fn string_new_from_slice(&self, s: &str) -> Result<StringObject, HostError>
fn string_new_from_slice(&self, s: &str) -> Result<StringObject, HostError>
String
host object from a slice of client memory.source§fn symbol_new_from_slice(&self, s: &str) -> Result<SymbolObject, HostError>
fn symbol_new_from_slice(&self, s: &str) -> Result<SymbolObject, HostError>
Symbol
host object from a slice of client memory.source§fn map_new_from_slices(
&self,
keys: &[&str],
vals: &[RawVal]
) -> Result<MapObject, HostError>
fn map_new_from_slices( &self, keys: &[&str], vals: &[RawVal] ) -> Result<MapObject, HostError>
Map
host object from a slice of symbol-names and a slice of values.
Keys must be in sorted order.source§fn map_unpack_to_slice(
&self,
map: MapObject,
keys: &[&str],
vals: &mut [RawVal]
) -> Result<Void, HostError>
fn map_unpack_to_slice( &self, map: MapObject, keys: &[&str], vals: &mut [RawVal] ) -> Result<Void, HostError>
Map
host object with a specified set of keys to a slice of
RawVal
s. Keys must be in sorted order and must match the key set of
the unpacked object exactly.source§fn vec_new_from_slice(&self, vals: &[RawVal]) -> Result<VecObject, Self::Error>
fn vec_new_from_slice(&self, vals: &[RawVal]) -> Result<VecObject, Self::Error>
Vec
host object from a slice of values.source§fn vec_unpack_to_slice(
&self,
vec: VecObject,
vals: &mut [RawVal]
) -> Result<Void, Self::Error>
fn vec_unpack_to_slice( &self, vec: VecObject, vals: &mut [RawVal] ) -> Result<Void, Self::Error>
Vec
host object from a slice of values. The values slice must
be the same length as the host object.source§fn symbol_index_in_strs(
&self,
sym: Symbol,
slices: &[&str]
) -> Result<U32Val, Self::Error>
fn symbol_index_in_strs( &self, sym: Symbol, slices: &[&str] ) -> Result<U32Val, Self::Error>
Symbol
in an array of &strs, or error if not found.source§fn log_static_fmt_val(
&self,
fmt: &'static str,
v: RawVal
) -> Result<(), HostError>
fn log_static_fmt_val( &self, fmt: &'static str, v: RawVal ) -> Result<(), HostError>
{}
markers) and
a single RawVal argument that will be inserted at the marker in the
format string.source§fn log_static_fmt_static_str(
&self,
fmt: &'static str,
s: &'static str
) -> Result<(), HostError>
fn log_static_fmt_static_str( &self, fmt: &'static str, s: &'static str ) -> Result<(), HostError>
{}
markers) and
a single string-slice argument that will be inserted at the marker in
the format string.source§fn log_static_fmt_val_static_str(
&self,
fmt: &'static str,
v: RawVal,
s: &'static str
) -> Result<(), HostError>
fn log_static_fmt_val_static_str( &self, fmt: &'static str, v: RawVal, s: &'static str ) -> Result<(), HostError>
{}
markers) and
both a RawVal and a string-slice argument, that will each be inserted
at markers in the format string.source§fn log_static_fmt_general(
&self,
fmt: &'static str,
vals: &[RawVal],
strs: &[&'static str]
) -> Result<(), HostError>
fn log_static_fmt_general( &self, fmt: &'static str, vals: &[RawVal], strs: &[&'static str] ) -> Result<(), HostError>
{}
markers) and
both a slice of RawVals and a slice of string-slice argument, that
will be sequentially inserted at markers in the format string.source§impl VmCallerEnv for Host
impl VmCallerEnv for Host
type VmUserState = Host
source§fn log_value(
&self,
_vmcaller: &mut VmCaller<'_, Host>,
v: RawVal
) -> Result<Void, HostError>
fn log_value( &self, _vmcaller: &mut VmCaller<'_, Host>, v: RawVal ) -> Result<Void, HostError>
source§fn log_fmt_values(
&self,
_vmcaller: &mut VmCaller<'_, Host>,
fmt: StringObject,
args: VecObject
) -> Result<Void, HostError>
fn log_fmt_values( &self, _vmcaller: &mut VmCaller<'_, Host>, fmt: StringObject, args: VecObject ) -> Result<Void, HostError>
source§fn get_invoking_contract(
&self,
_vmcaller: &mut VmCaller<'_, Host>
) -> Result<Object, HostError>
fn get_invoking_contract( &self, _vmcaller: &mut VmCaller<'_, Host> ) -> Result<Object, HostError>
Bytes
of the contract which invoked the running contract. Traps if the running contract was not invoked by a contract.source§fn obj_cmp(
&self,
_vmcaller: &mut VmCaller<'_, Host>,
a: RawVal,
b: RawVal
) -> Result<i64, HostError>
fn obj_cmp( &self, _vmcaller: &mut VmCaller<'_, Host>, a: RawVal, b: RawVal ) -> Result<i64, HostError>
source§fn contract_event(
&self,
_vmcaller: &mut VmCaller<'_, Host>,
topics: VecObject,
data: RawVal
) -> Result<Void, HostError>
fn contract_event( &self, _vmcaller: &mut VmCaller<'_, Host>, topics: VecObject, data: RawVal ) -> Result<Void, HostError>
topics
is expected to be a SCVec
with length <= 4 that cannot contain Vec
, Map
, or Bytes
with length > 32 On success, returns an SCStatus::Ok
.source§fn get_current_contract_address(
&self,
_vmcaller: &mut VmCaller<'_, Host>
) -> Result<AddressObject, HostError>
fn get_current_contract_address( &self, _vmcaller: &mut VmCaller<'_, Host> ) -> Result<AddressObject, HostError>
source§fn obj_from_u64(
&self,
_vmcaller: &mut VmCaller<'_, Host>,
u: u64
) -> Result<U64Object, HostError>
fn obj_from_u64( &self, _vmcaller: &mut VmCaller<'_, Host>, u: u64 ) -> Result<U64Object, HostError>
source§fn obj_to_u64(
&self,
_vmcaller: &mut VmCaller<'_, Host>,
obj: U64Object
) -> Result<u64, HostError>
fn obj_to_u64( &self, _vmcaller: &mut VmCaller<'_, Host>, obj: U64Object ) -> Result<u64, HostError>
source§fn obj_from_i64(
&self,
_vmcaller: &mut VmCaller<'_, Host>,
i: i64
) -> Result<I64Object, HostError>
fn obj_from_i64( &self, _vmcaller: &mut VmCaller<'_, Host>, i: i64 ) -> Result<I64Object, HostError>
source§fn obj_to_i64(
&self,
_vmcaller: &mut VmCaller<'_, Host>,
obj: I64Object
) -> Result<i64, HostError>
fn obj_to_i64( &self, _vmcaller: &mut VmCaller<'_, Host>, obj: I64Object ) -> Result<i64, HostError>
source§fn obj_from_u128_pieces(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
lo: u64,
hi: u64
) -> Result<U128Object, Self::Error>
fn obj_from_u128_pieces( &self, vmcaller: &mut VmCaller<'_, Self::VmUserState>, lo: u64, hi: u64 ) -> Result<U128Object, Self::Error>
source§fn obj_to_u128_lo64(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
obj: U128Object
) -> Result<u64, Self::Error>
fn obj_to_u128_lo64( &self, vmcaller: &mut VmCaller<'_, Self::VmUserState>, obj: U128Object ) -> Result<u64, Self::Error>
source§fn obj_to_u128_hi64(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
obj: U128Object
) -> Result<u64, Self::Error>
fn obj_to_u128_hi64( &self, vmcaller: &mut VmCaller<'_, Self::VmUserState>, obj: U128Object ) -> Result<u64, Self::Error>
source§fn obj_from_i128_pieces(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
lo: u64,
hi: u64
) -> Result<I128Object, Self::Error>
fn obj_from_i128_pieces( &self, vmcaller: &mut VmCaller<'_, Self::VmUserState>, lo: u64, hi: u64 ) -> Result<I128Object, Self::Error>
source§fn obj_to_i128_lo64(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
obj: I128Object
) -> Result<u64, Self::Error>
fn obj_to_i128_lo64( &self, vmcaller: &mut VmCaller<'_, Self::VmUserState>, obj: I128Object ) -> Result<u64, Self::Error>
source§fn obj_to_i128_hi64(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
obj: I128Object
) -> Result<u64, Self::Error>
fn obj_to_i128_hi64( &self, vmcaller: &mut VmCaller<'_, Self::VmUserState>, obj: I128Object ) -> Result<u64, Self::Error>
source§fn map_new(
&self,
_vmcaller: &mut VmCaller<'_, Host>
) -> Result<MapObject, HostError>
fn map_new( &self, _vmcaller: &mut VmCaller<'_, Host> ) -> Result<MapObject, HostError>
source§fn map_put(
&self,
_vmcaller: &mut VmCaller<'_, Host>,
m: MapObject,
k: RawVal,
v: RawVal
) -> Result<MapObject, HostError>
fn map_put( &self, _vmcaller: &mut VmCaller<'_, Host>, m: MapObject, k: RawVal, v: RawVal ) -> Result<MapObject, HostError>
source§fn map_get(
&self,
_vmcaller: &mut VmCaller<'_, Host>,
m: MapObject,
k: RawVal
) -> Result<RawVal, HostError>
fn map_get( &self, _vmcaller: &mut VmCaller<'_, Host>, m: MapObject, k: RawVal ) -> Result<RawVal, HostError>
source§fn map_del(
&self,
_vmcaller: &mut VmCaller<'_, Host>,
m: MapObject,
k: RawVal
) -> Result<MapObject, HostError>
fn map_del( &self, _vmcaller: &mut VmCaller<'_, Host>, m: MapObject, k: RawVal ) -> Result<MapObject, HostError>
source§fn map_len(
&self,
_vmcaller: &mut VmCaller<'_, Host>,
m: MapObject
) -> Result<U32Val, HostError>
fn map_len( &self, _vmcaller: &mut VmCaller<'_, Host>, m: MapObject ) -> Result<U32Val, HostError>
source§fn map_has(
&self,
_vmcaller: &mut VmCaller<'_, Host>,
m: MapObject,
k: RawVal
) -> Result<Bool, HostError>
fn map_has( &self, _vmcaller: &mut VmCaller<'_, Host>, m: MapObject, k: RawVal ) -> Result<Bool, HostError>
source§fn map_prev_key(
&self,
_vmcaller: &mut VmCaller<'_, Host>,
m: MapObject,
k: RawVal
) -> Result<RawVal, HostError>
fn map_prev_key( &self, _vmcaller: &mut VmCaller<'_, Host>, m: MapObject, k: RawVal ) -> Result<RawVal, HostError>
source§fn map_next_key(
&self,
_vmcaller: &mut VmCaller<'_, Host>,
m: MapObject,
k: RawVal
) -> Result<RawVal, HostError>
fn map_next_key( &self, _vmcaller: &mut VmCaller<'_, Host>, m: MapObject, k: RawVal ) -> Result<RawVal, HostError>
source§fn map_min_key(
&self,
_vmcaller: &mut VmCaller<'_, Host>,
m: MapObject
) -> Result<RawVal, HostError>
fn map_min_key( &self, _vmcaller: &mut VmCaller<'_, Host>, m: MapObject ) -> Result<RawVal, HostError>
source§fn map_max_key(
&self,
_vmcaller: &mut VmCaller<'_, Host>,
m: MapObject
) -> Result<RawVal, HostError>
fn map_max_key( &self, _vmcaller: &mut VmCaller<'_, Host>, m: MapObject ) -> Result<RawVal, HostError>
source§fn map_keys(
&self,
_vmcaller: &mut VmCaller<'_, Host>,
m: MapObject
) -> Result<VecObject, HostError>
fn map_keys( &self, _vmcaller: &mut VmCaller<'_, Host>, m: MapObject ) -> Result<VecObject, HostError>
source§fn map_values(
&self,
_vmcaller: &mut VmCaller<'_, Host>,
m: MapObject
) -> Result<VecObject, HostError>
fn map_values( &self, _vmcaller: &mut VmCaller<'_, Host>, m: MapObject ) -> Result<VecObject, HostError>
source§fn map_new_from_linear_memory(
&self,
vmcaller: &mut VmCaller<'_, Host>,
keys_pos: U32Val,
vals_pos: U32Val,
len: U32Val
) -> Result<MapObject, HostError>
fn map_new_from_linear_memory( &self, vmcaller: &mut VmCaller<'_, Host>, keys_pos: U32Val, vals_pos: U32Val, len: U32Val ) -> Result<MapObject, HostError>
source§fn map_unpack_to_linear_memory(
&self,
vmcaller: &mut VmCaller<'_, Host>,
map: MapObject,
keys_pos: U32Val,
vals_pos: U32Val,
len: U32Val
) -> Result<Void, HostError>
fn map_unpack_to_linear_memory( &self, vmcaller: &mut VmCaller<'_, Host>, map: MapObject, keys_pos: U32Val, vals_pos: U32Val, len: U32Val ) -> Result<Void, HostError>
source§fn vec_new(
&self,
_vmcaller: &mut VmCaller<'_, Host>,
c: RawVal
) -> Result<VecObject, HostError>
fn vec_new( &self, _vmcaller: &mut VmCaller<'_, Host>, c: RawVal ) -> Result<VecObject, HostError>
c
. If c
is ScStatic::Void
, no hint is assumed and the new vector is empty. Otherwise, c
is parsed as an u32
that represents the initial capacity of the new vector.source§fn vec_put(
&self,
_vmcaller: &mut VmCaller<'_, Host>,
v: VecObject,
i: U32Val,
x: RawVal
) -> Result<VecObject, HostError>
fn vec_put( &self, _vmcaller: &mut VmCaller<'_, Host>, v: VecObject, i: U32Val, x: RawVal ) -> Result<VecObject, HostError>
i
in the vector. Return the new vector. Trap if the index is out of bounds.source§fn vec_get(
&self,
_vmcaller: &mut VmCaller<'_, Host>,
v: VecObject,
i: U32Val
) -> Result<RawVal, HostError>
fn vec_get( &self, _vmcaller: &mut VmCaller<'_, Host>, v: VecObject, i: U32Val ) -> Result<RawVal, HostError>
i
of the vector. Traps if the index is out of bound.source§fn vec_del(
&self,
_vmcaller: &mut VmCaller<'_, Host>,
v: VecObject,
i: U32Val
) -> Result<VecObject, HostError>
fn vec_del( &self, _vmcaller: &mut VmCaller<'_, Host>, v: VecObject, i: U32Val ) -> Result<VecObject, HostError>
i
, shifting all elements after it to the left. Return the new vector. Traps if the index is out of bound.source§fn vec_len(
&self,
_vmcaller: &mut VmCaller<'_, Host>,
v: VecObject
) -> Result<U32Val, HostError>
fn vec_len( &self, _vmcaller: &mut VmCaller<'_, Host>, v: VecObject ) -> Result<U32Val, HostError>
source§fn vec_push_front(
&self,
_vmcaller: &mut VmCaller<'_, Host>,
v: VecObject,
x: RawVal
) -> Result<VecObject, HostError>
fn vec_push_front( &self, _vmcaller: &mut VmCaller<'_, Host>, v: VecObject, x: RawVal ) -> Result<VecObject, HostError>
source§fn vec_pop_front(
&self,
_vmcaller: &mut VmCaller<'_, Host>,
v: VecObject
) -> Result<VecObject, HostError>
fn vec_pop_front( &self, _vmcaller: &mut VmCaller<'_, Host>, v: VecObject ) -> Result<VecObject, HostError>
source§fn vec_push_back(
&self,
_vmcaller: &mut VmCaller<'_, Host>,
v: VecObject,
x: RawVal
) -> Result<VecObject, HostError>
fn vec_push_back( &self, _vmcaller: &mut VmCaller<'_, Host>, v: VecObject, x: RawVal ) -> Result<VecObject, HostError>
source§fn vec_pop_back(
&self,
_vmcaller: &mut VmCaller<'_, Host>,
v: VecObject
) -> Result<VecObject, HostError>
fn vec_pop_back( &self, _vmcaller: &mut VmCaller<'_, Host>, v: VecObject ) -> Result<VecObject, HostError>
source§fn vec_front(
&self,
_vmcaller: &mut VmCaller<'_, Host>,
v: VecObject
) -> Result<RawVal, HostError>
fn vec_front( &self, _vmcaller: &mut VmCaller<'_, Host>, v: VecObject ) -> Result<RawVal, HostError>
source§fn vec_back(
&self,
_vmcaller: &mut VmCaller<'_, Host>,
v: VecObject
) -> Result<RawVal, HostError>
fn vec_back( &self, _vmcaller: &mut VmCaller<'_, Host>, v: VecObject ) -> Result<RawVal, HostError>
source§fn vec_insert(
&self,
_vmcaller: &mut VmCaller<'_, Host>,
v: VecObject,
i: U32Val,
x: RawVal
) -> Result<VecObject, HostError>
fn vec_insert( &self, _vmcaller: &mut VmCaller<'_, Host>, v: VecObject, i: U32Val, x: RawVal ) -> Result<VecObject, HostError>
i
within the vector, shifting all elements after it to the right. Traps if the index is out of boundsource§fn vec_append(
&self,
_vmcaller: &mut VmCaller<'_, Host>,
v1: VecObject,
v2: VecObject
) -> Result<VecObject, HostError>
fn vec_append( &self, _vmcaller: &mut VmCaller<'_, Host>, v1: VecObject, v2: VecObject ) -> Result<VecObject, HostError>
v1
, then moves all the elements of vector v2
into it. Return the new vector. Traps if number of elements in the vector overflows a u32.source§fn vec_slice(
&self,
_vmcaller: &mut VmCaller<'_, Host>,
v: VecObject,
start: U32Val,
end: U32Val
) -> Result<VecObject, HostError>
fn vec_slice( &self, _vmcaller: &mut VmCaller<'_, Host>, v: VecObject, start: U32Val, end: U32Val ) -> Result<VecObject, HostError>
start
index until end
index, exclusive, in the vector and create a new vector from it. Return the new vector. Traps if the index is out of bound.source§fn vec_first_index_of(
&self,
_vmcaller: &mut VmCaller<'_, Host>,
v: VecObject,
x: RawVal
) -> Result<RawVal, Self::Error>
fn vec_first_index_of( &self, _vmcaller: &mut VmCaller<'_, Host>, v: VecObject, x: RawVal ) -> Result<RawVal, Self::Error>
ScStatic::Void
.source§fn vec_last_index_of(
&self,
_vmcaller: &mut VmCaller<'_, Host>,
v: VecObject,
x: RawVal
) -> Result<RawVal, Self::Error>
fn vec_last_index_of( &self, _vmcaller: &mut VmCaller<'_, Host>, v: VecObject, x: RawVal ) -> Result<RawVal, Self::Error>
ScStatic::Void
.source§fn vec_binary_search(
&self,
_vmcaller: &mut VmCaller<'_, Host>,
v: VecObject,
x: RawVal
) -> Result<u64, Self::Error>
fn vec_binary_search( &self, _vmcaller: &mut VmCaller<'_, Host>, v: VecObject, x: RawVal ) -> Result<u64, Self::Error>
source§fn vec_new_from_linear_memory(
&self,
vmcaller: &mut VmCaller<'_, Host>,
vals_pos: U32Val,
len: U32Val
) -> Result<VecObject, HostError>
fn vec_new_from_linear_memory( &self, vmcaller: &mut VmCaller<'_, Host>, vals_pos: U32Val, len: U32Val ) -> Result<VecObject, HostError>
source§fn vec_unpack_to_linear_memory(
&self,
vmcaller: &mut VmCaller<'_, Host>,
vec: VecObject,
vals_pos: U32Val,
len: U32Val
) -> Result<Void, HostError>
fn vec_unpack_to_linear_memory( &self, vmcaller: &mut VmCaller<'_, Host>, vec: VecObject, vals_pos: U32Val, len: U32Val ) -> Result<Void, HostError>
fn put_contract_data( &self, _vmcaller: &mut VmCaller<'_, Host>, k: RawVal, v: RawVal ) -> Result<RawVal, HostError>
fn has_contract_data( &self, _vmcaller: &mut VmCaller<'_, Host>, k: RawVal ) -> Result<Bool, HostError>
fn get_contract_data( &self, _vmcaller: &mut VmCaller<'_, Host>, k: RawVal ) -> Result<RawVal, HostError>
fn del_contract_data( &self, _vmcaller: &mut VmCaller<'_, Host>, k: RawVal ) -> Result<RawVal, HostError>
source§fn create_contract_from_contract(
&self,
_vmcaller: &mut VmCaller<'_, Host>,
wasm_hash: BytesObject,
salt: BytesObject
) -> Result<BytesObject, HostError>
fn create_contract_from_contract( &self, _vmcaller: &mut VmCaller<'_, Host>, wasm_hash: BytesObject, salt: BytesObject ) -> Result<BytesObject, HostError>
wasm_hash
must be a hash of the contract code that has already been installed on this network. salt
is used to create a unique contract id.source§fn call(
&self,
_vmcaller: &mut VmCaller<'_, Host>,
contract: BytesObject,
func: Symbol,
args: VecObject
) -> Result<RawVal, HostError>
fn call( &self, _vmcaller: &mut VmCaller<'_, Host>, contract: BytesObject, func: Symbol, args: VecObject ) -> Result<RawVal, HostError>
args
. If the call is successful, forwards the result of the called function. Traps otherwise.source§fn try_call(
&self,
vmcaller: &mut VmCaller<'_, Host>,
contract: BytesObject,
func: Symbol,
args: VecObject
) -> Result<RawVal, HostError>
fn try_call( &self, vmcaller: &mut VmCaller<'_, Host>, contract: BytesObject, func: Symbol, args: VecObject ) -> Result<RawVal, HostError>
args
. Returns: - if successful, result of the called function. - otherwise, an SCStatus
containing the error status code.source§fn serialize_to_bytes(
&self,
_vmcaller: &mut VmCaller<'_, Host>,
v: RawVal
) -> Result<BytesObject, HostError>
fn serialize_to_bytes( &self, _vmcaller: &mut VmCaller<'_, Host>, v: RawVal ) -> Result<BytesObject, HostError>
Bytes
object.source§fn deserialize_from_bytes(
&self,
_vmcaller: &mut VmCaller<'_, Host>,
b: BytesObject
) -> Result<RawVal, HostError>
fn deserialize_from_bytes( &self, _vmcaller: &mut VmCaller<'_, Host>, b: BytesObject ) -> Result<RawVal, HostError>
Bytes
object to get back the (SC)Val.source§fn string_copy_to_linear_memory(
&self,
vmcaller: &mut VmCaller<'_, Host>,
s: StringObject,
s_pos: U32Val,
lm_pos: U32Val,
len: U32Val
) -> Result<Void, HostError>
fn string_copy_to_linear_memory( &self, vmcaller: &mut VmCaller<'_, Host>, s: StringObject, s_pos: U32Val, lm_pos: U32Val, len: U32Val ) -> Result<Void, HostError>
String
object specified at offset s_pos
with length len
into the linear memory at position lm_pos
. Traps if either the String
object or the linear memory doesn’t have enough bytes.source§fn symbol_copy_to_linear_memory(
&self,
vmcaller: &mut VmCaller<'_, Host>,
s: SymbolObject,
s_pos: U32Val,
lm_pos: U32Val,
len: U32Val
) -> Result<Void, HostError>
fn symbol_copy_to_linear_memory( &self, vmcaller: &mut VmCaller<'_, Host>, s: SymbolObject, s_pos: U32Val, lm_pos: U32Val, len: U32Val ) -> Result<Void, HostError>
Symbol
object specified at offset s_pos
with length len
into the linear memory at position lm_pos
. Traps if either the String
object or the linear memory doesn’t have enough bytes.source§fn bytes_copy_to_linear_memory(
&self,
vmcaller: &mut VmCaller<'_, Host>,
b: BytesObject,
b_pos: U32Val,
lm_pos: U32Val,
len: U32Val
) -> Result<Void, HostError>
fn bytes_copy_to_linear_memory( &self, vmcaller: &mut VmCaller<'_, Host>, b: BytesObject, b_pos: U32Val, lm_pos: U32Val, len: U32Val ) -> Result<Void, HostError>
Bytes
object specified at offset b_pos
with length len
into the linear memory at position lm_pos
. Traps if either the Bytes
object or the linear memory doesn’t have enough bytes.source§fn bytes_copy_from_linear_memory(
&self,
vmcaller: &mut VmCaller<'_, Host>,
b: BytesObject,
b_pos: U32Val,
lm_pos: U32Val,
len: U32Val
) -> Result<BytesObject, HostError>
fn bytes_copy_from_linear_memory( &self, vmcaller: &mut VmCaller<'_, Host>, b: BytesObject, b_pos: U32Val, lm_pos: U32Val, len: U32Val ) -> Result<BytesObject, HostError>
lm_pos
with length len
, into a Bytes
object at offset b_pos
. The Bytes
object may grow in size to accommodate the new bytes. Traps if the linear memory doesn’t have enough bytes.source§fn bytes_new_from_linear_memory(
&self,
vmcaller: &mut VmCaller<'_, Host>,
lm_pos: U32Val,
len: U32Val
) -> Result<BytesObject, HostError>
fn bytes_new_from_linear_memory( &self, vmcaller: &mut VmCaller<'_, Host>, lm_pos: U32Val, len: U32Val ) -> Result<BytesObject, HostError>
Bytes
object initialized with bytes copied from a linear memory slice specified at position lm_pos
with length len
.source§fn string_new_from_linear_memory(
&self,
vmcaller: &mut VmCaller<'_, Host>,
lm_pos: U32Val,
len: U32Val
) -> Result<StringObject, HostError>
fn string_new_from_linear_memory( &self, vmcaller: &mut VmCaller<'_, Host>, lm_pos: U32Val, len: U32Val ) -> Result<StringObject, HostError>
String
object initialized with bytes copied from a linear memory slice specified at position lm_pos
with length len
.source§fn symbol_new_from_linear_memory(
&self,
vmcaller: &mut VmCaller<'_, Host>,
lm_pos: U32Val,
len: U32Val
) -> Result<SymbolObject, HostError>
fn symbol_new_from_linear_memory( &self, vmcaller: &mut VmCaller<'_, Host>, lm_pos: U32Val, len: U32Val ) -> Result<SymbolObject, HostError>
Symbol
object initialized with bytes copied from a linear memory slice specified at position lm_pos
with length len
.source§fn symbol_index_in_linear_memory(
&self,
vmcaller: &mut VmCaller<'_, Host>,
sym: Symbol,
lm_pos: U32Val,
len: U32Val
) -> Result<U32Val, HostError>
fn symbol_index_in_linear_memory( &self, vmcaller: &mut VmCaller<'_, Host>, sym: Symbol, lm_pos: U32Val, len: U32Val ) -> Result<U32Val, HostError>
source§fn bytes_new(
&self,
_vmcaller: &mut VmCaller<'_, Host>
) -> Result<BytesObject, HostError>
fn bytes_new( &self, _vmcaller: &mut VmCaller<'_, Host> ) -> Result<BytesObject, HostError>
Bytes
object.source§fn bytes_put(
&self,
_vmcaller: &mut VmCaller<'_, Host>,
b: BytesObject,
i: U32Val,
u: U32Val
) -> Result<BytesObject, HostError>
fn bytes_put( &self, _vmcaller: &mut VmCaller<'_, Host>, b: BytesObject, i: U32Val, u: U32Val ) -> Result<BytesObject, HostError>
i
in the Bytes
object. Return the new Bytes
. Trap if the index is out of bounds.source§fn bytes_get(
&self,
_vmcaller: &mut VmCaller<'_, Host>,
b: BytesObject,
i: U32Val
) -> Result<U32Val, HostError>
fn bytes_get( &self, _vmcaller: &mut VmCaller<'_, Host>, b: BytesObject, i: U32Val ) -> Result<U32Val, HostError>
i
of the Bytes
object. Traps if the index is out of bound.source§fn bytes_del(
&self,
_vmcaller: &mut VmCaller<'_, Host>,
b: BytesObject,
i: U32Val
) -> Result<BytesObject, HostError>
fn bytes_del( &self, _vmcaller: &mut VmCaller<'_, Host>, b: BytesObject, i: U32Val ) -> Result<BytesObject, HostError>
Bytes
object at index i
, shifting all elements after it to the left. Return the new Bytes
. Traps if the index is out of bound.source§fn bytes_len(
&self,
_vmcaller: &mut VmCaller<'_, Host>,
b: BytesObject
) -> Result<U32Val, HostError>
fn bytes_len( &self, _vmcaller: &mut VmCaller<'_, Host>, b: BytesObject ) -> Result<U32Val, HostError>
Bytes
object.source§fn string_len(
&self,
_vmcaller: &mut VmCaller<'_, Host>,
b: StringObject
) -> Result<U32Val, HostError>
fn string_len( &self, _vmcaller: &mut VmCaller<'_, Host>, b: StringObject ) -> Result<U32Val, HostError>
String
object.source§fn symbol_len(
&self,
_vmcaller: &mut VmCaller<'_, Host>,
b: SymbolObject
) -> Result<U32Val, HostError>
fn symbol_len( &self, _vmcaller: &mut VmCaller<'_, Host>, b: SymbolObject ) -> Result<U32Val, HostError>
Symbol
object.source§fn bytes_push(
&self,
_vmcaller: &mut VmCaller<'_, Host>,
b: BytesObject,
u: U32Val
) -> Result<BytesObject, HostError>
fn bytes_push( &self, _vmcaller: &mut VmCaller<'_, Host>, b: BytesObject, u: U32Val ) -> Result<BytesObject, HostError>
Bytes
object.source§fn bytes_pop(
&self,
_vmcaller: &mut VmCaller<'_, Host>,
b: BytesObject
) -> Result<BytesObject, HostError>
fn bytes_pop( &self, _vmcaller: &mut VmCaller<'_, Host>, b: BytesObject ) -> Result<BytesObject, HostError>
Bytes
object and returns the new Bytes
. Traps if original Bytes
is empty.source§fn bytes_front(
&self,
_vmcaller: &mut VmCaller<'_, Host>,
b: BytesObject
) -> Result<U32Val, HostError>
fn bytes_front( &self, _vmcaller: &mut VmCaller<'_, Host>, b: BytesObject ) -> Result<U32Val, HostError>
Bytes
object. Traps if the Bytes
is emptysource§fn bytes_back(
&self,
_vmcaller: &mut VmCaller<'_, Host>,
b: BytesObject
) -> Result<U32Val, HostError>
fn bytes_back( &self, _vmcaller: &mut VmCaller<'_, Host>, b: BytesObject ) -> Result<U32Val, HostError>
Bytes
object. Traps if the Bytes
is emptysource§fn bytes_insert(
&self,
_vmcaller: &mut VmCaller<'_, Host>,
b: BytesObject,
i: U32Val,
u: U32Val
) -> Result<BytesObject, HostError>
fn bytes_insert( &self, _vmcaller: &mut VmCaller<'_, Host>, b: BytesObject, i: U32Val, u: U32Val ) -> Result<BytesObject, HostError>
i
within the Bytes
object, shifting all elements after it to the right. Traps if the index is out of boundsource§fn bytes_append(
&self,
_vmcaller: &mut VmCaller<'_, Host>,
b1: BytesObject,
b2: BytesObject
) -> Result<BytesObject, HostError>
fn bytes_append( &self, _vmcaller: &mut VmCaller<'_, Host>, b1: BytesObject, b2: BytesObject ) -> Result<BytesObject, HostError>
Bytes
object b1
, then moves all the elements of Bytes
object b2
into it. Return the new Bytes
. Traps if its length overflows a u32.source§fn bytes_slice(
&self,
_vmcaller: &mut VmCaller<'_, Host>,
b: BytesObject,
start: U32Val,
end: U32Val
) -> Result<BytesObject, HostError>
fn bytes_slice( &self, _vmcaller: &mut VmCaller<'_, Host>, b: BytesObject, start: U32Val, end: U32Val ) -> Result<BytesObject, HostError>
start
index until end
index, exclusive, in the Bytes
object and creates a new Bytes
from it. Returns the new Bytes
. Traps if the index is out of bound.fn compute_hash_sha256( &self, _vmcaller: &mut VmCaller<'_, Host>, x: BytesObject ) -> Result<BytesObject, HostError>
fn verify_sig_ed25519( &self, _vmcaller: &mut VmCaller<'_, Host>, x: BytesObject, k: BytesObject, s: BytesObject ) -> Result<Void, HostError>
source§fn get_ledger_version(
&self,
_vmcaller: &mut VmCaller<'_, Host>
) -> Result<U32Val, Self::Error>
fn get_ledger_version( &self, _vmcaller: &mut VmCaller<'_, Host> ) -> Result<U32Val, Self::Error>
source§fn get_ledger_sequence(
&self,
_vmcaller: &mut VmCaller<'_, Host>
) -> Result<U32Val, Self::Error>
fn get_ledger_sequence( &self, _vmcaller: &mut VmCaller<'_, Host> ) -> Result<U32Val, Self::Error>
source§fn get_ledger_timestamp(
&self,
_vmcaller: &mut VmCaller<'_, Host>
) -> Result<U64Val, Self::Error>
fn get_ledger_timestamp( &self, _vmcaller: &mut VmCaller<'_, Host> ) -> Result<U64Val, Self::Error>
source§fn get_ledger_network_id(
&self,
_vmcaller: &mut VmCaller<'_, Host>
) -> Result<BytesObject, Self::Error>
fn get_ledger_network_id( &self, _vmcaller: &mut VmCaller<'_, Host> ) -> Result<BytesObject, Self::Error>
Bytes
. The value is always 32 bytes in length.source§fn get_current_call_stack(
&self,
_vmcaller: &mut VmCaller<'_, Host>
) -> Result<VecObject, HostError>
fn get_current_call_stack( &self, _vmcaller: &mut VmCaller<'_, Host> ) -> Result<VecObject, HostError>
source§fn fail_with_status(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
status: Status
) -> Result<Void, Self::Error>
fn fail_with_status( &self, vmcaller: &mut VmCaller<'_, Self::VmUserState>, status: Status ) -> Result<Void, Self::Error>
ScStatusType::ContractError
. Does not actually return.source§fn dummy0(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>
) -> Result<RawVal, Self::Error>
fn dummy0( &self, vmcaller: &mut VmCaller<'_, Self::VmUserState> ) -> Result<RawVal, Self::Error>
source§fn require_auth_for_args(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
address: AddressObject,
args: VecObject
) -> Result<RawVal, Self::Error>
fn require_auth_for_args( &self, vmcaller: &mut VmCaller<'_, Self::VmUserState>, address: AddressObject, args: VecObject ) -> Result<RawVal, Self::Error>
source§fn require_auth(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
address: AddressObject
) -> Result<RawVal, Self::Error>
fn require_auth( &self, vmcaller: &mut VmCaller<'_, Self::VmUserState>, address: AddressObject ) -> Result<RawVal, Self::Error>
source§fn get_current_contract_id(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>
) -> Result<BytesObject, Self::Error>
fn get_current_contract_id( &self, vmcaller: &mut VmCaller<'_, Self::VmUserState> ) -> Result<BytesObject, Self::Error>
source§fn account_public_key_to_address(
&self,
_vmcaller: &mut VmCaller<'_, Self::VmUserState>,
pk_bytes: BytesObject
) -> Result<AddressObject, Self::Error>
fn account_public_key_to_address( &self, _vmcaller: &mut VmCaller<'_, Self::VmUserState>, pk_bytes: BytesObject ) -> Result<AddressObject, Self::Error>
source§fn contract_id_to_address(
&self,
_vmcaller: &mut VmCaller<'_, Self::VmUserState>,
contract_id_bytes: BytesObject
) -> Result<AddressObject, Self::Error>
fn contract_id_to_address( &self, _vmcaller: &mut VmCaller<'_, Self::VmUserState>, contract_id_bytes: BytesObject ) -> Result<AddressObject, Self::Error>
source§fn address_to_account_public_key(
&self,
_vmcaller: &mut VmCaller<'_, Self::VmUserState>,
address: AddressObject
) -> Result<RawVal, Self::Error>
fn address_to_account_public_key( &self, _vmcaller: &mut VmCaller<'_, Self::VmUserState>, address: AddressObject ) -> Result<RawVal, Self::Error>
()
).source§fn address_to_contract_id(
&self,
_vmcaller: &mut VmCaller<'_, Self::VmUserState>,
address: AddressObject
) -> Result<RawVal, Self::Error>
fn address_to_contract_id( &self, _vmcaller: &mut VmCaller<'_, Self::VmUserState>, address: AddressObject ) -> Result<RawVal, Self::Error>
()
).Auto Trait Implementations§
impl !RefUnwindSafe for Host
impl !Send for Host
impl !Sync for Host
impl Unpin for Host
impl !UnwindSafe for Host
Blanket Implementations§
source§impl<T, U, E, C> Compare<(T, U)> for Cwhere
C: Compare<T, Error = E, Error = E> + Compare<U>,
impl<T, U, E, C> Compare<(T, U)> for Cwhere C: Compare<T, Error = E, Error = E> + Compare<U>,
source§impl<T, U, V, E, C> Compare<(T, U, V)> for Cwhere
C: Compare<T, Error = E, Error = E, Error = E> + Compare<U> + Compare<V>,
impl<T, U, V, E, C> Compare<(T, U, V)> for Cwhere C: Compare<T, Error = E, Error = E, Error = E> + Compare<U> + Compare<V>,
source§impl<E> Compare<AddressObject> for Ewhere
E: Env,
impl<E> Compare<AddressObject> for Ewhere E: Env,
type Error = <E as EnvBase>::Error
fn compare( &self, a: &AddressObject, b: &AddressObject ) -> Result<Ordering, <E as Compare<AddressObject>>::Error>
source§impl<E> Compare<BytesObject> for Ewhere
E: Env,
impl<E> Compare<BytesObject> for Ewhere E: Env,
type Error = <E as EnvBase>::Error
fn compare( &self, a: &BytesObject, b: &BytesObject ) -> Result<Ordering, <E as Compare<BytesObject>>::Error>
source§impl<E> Compare<ContractExecutableObject> for Ewhere
E: Env,
impl<E> Compare<ContractExecutableObject> for Ewhere E: Env,
type Error = <E as EnvBase>::Error
fn compare( &self, a: &ContractExecutableObject, b: &ContractExecutableObject ) -> Result<Ordering, <E as Compare<ContractExecutableObject>>::Error>
source§impl<E> Compare<DurationObject> for Ewhere
E: Env,
impl<E> Compare<DurationObject> for Ewhere E: Env,
type Error = <E as EnvBase>::Error
fn compare( &self, a: &DurationObject, b: &DurationObject ) -> Result<Ordering, <E as Compare<DurationObject>>::Error>
source§impl<E> Compare<DurationSmall> for Ewhere
E: Env,
impl<E> Compare<DurationSmall> for Ewhere E: Env,
type Error = <E as EnvBase>::Error
fn compare( &self, a: &DurationSmall, b: &DurationSmall ) -> Result<Ordering, <E as Compare<DurationSmall>>::Error>
source§impl<E> Compare<I128Object> for Ewhere
E: Env,
impl<E> Compare<I128Object> for Ewhere E: Env,
type Error = <E as EnvBase>::Error
fn compare( &self, a: &I128Object, b: &I128Object ) -> Result<Ordering, <E as Compare<I128Object>>::Error>
source§impl<E> Compare<I256Object> for Ewhere
E: Env,
impl<E> Compare<I256Object> for Ewhere E: Env,
type Error = <E as EnvBase>::Error
fn compare( &self, a: &I256Object, b: &I256Object ) -> Result<Ordering, <E as Compare<I256Object>>::Error>
source§impl<E> Compare<LedgerKeyNonceObject> for Ewhere
E: Env,
impl<E> Compare<LedgerKeyNonceObject> for Ewhere E: Env,
type Error = <E as EnvBase>::Error
fn compare( &self, a: &LedgerKeyNonceObject, b: &LedgerKeyNonceObject ) -> Result<Ordering, <E as Compare<LedgerKeyNonceObject>>::Error>
source§impl<E> Compare<StringObject> for Ewhere
E: Env,
impl<E> Compare<StringObject> for Ewhere E: Env,
type Error = <E as EnvBase>::Error
fn compare( &self, a: &StringObject, b: &StringObject ) -> Result<Ordering, <E as Compare<StringObject>>::Error>
source§impl<E> Compare<SymbolObject> for Ewhere
E: Env,
impl<E> Compare<SymbolObject> for Ewhere E: Env,
type Error = <E as EnvBase>::Error
fn compare( &self, a: &SymbolObject, b: &SymbolObject ) -> Result<Ordering, <E as Compare<SymbolObject>>::Error>
source§impl<E> Compare<SymbolSmall> for Ewhere
E: Env,
impl<E> Compare<SymbolSmall> for Ewhere E: Env,
type Error = <E as EnvBase>::Error
fn compare( &self, a: &SymbolSmall, b: &SymbolSmall ) -> Result<Ordering, <E as Compare<SymbolSmall>>::Error>
source§impl<E> Compare<TimepointObject> for Ewhere
E: Env,
impl<E> Compare<TimepointObject> for Ewhere E: Env,
type Error = <E as EnvBase>::Error
fn compare( &self, a: &TimepointObject, b: &TimepointObject ) -> Result<Ordering, <E as Compare<TimepointObject>>::Error>
source§impl<E> Compare<TimepointSmall> for Ewhere
E: Env,
impl<E> Compare<TimepointSmall> for Ewhere E: Env,
type Error = <E as EnvBase>::Error
fn compare( &self, a: &TimepointSmall, b: &TimepointSmall ) -> Result<Ordering, <E as Compare<TimepointSmall>>::Error>
source§impl<E> Compare<U128Object> for Ewhere
E: Env,
impl<E> Compare<U128Object> for Ewhere E: Env,
type Error = <E as EnvBase>::Error
fn compare( &self, a: &U128Object, b: &U128Object ) -> Result<Ordering, <E as Compare<U128Object>>::Error>
source§impl<E> Compare<U256Object> for Ewhere
E: Env,
impl<E> Compare<U256Object> for Ewhere E: Env,
type Error = <E as EnvBase>::Error
fn compare( &self, a: &U256Object, b: &U256Object ) -> Result<Ordering, <E as Compare<U256Object>>::Error>
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere T: Any,
§fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>
fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.source§impl<T> Env for Twhere
T: VmCallerEnv,
impl<T> Env for Twhere T: VmCallerEnv,
source§fn log_value(&self, v: RawVal) -> Result<Void, <T as EnvBase>::Error>
fn log_value(&self, v: RawVal) -> Result<Void, <T as EnvBase>::Error>
source§fn get_invoking_contract(&self) -> Result<Object, <T as EnvBase>::Error>
fn get_invoking_contract(&self) -> Result<Object, <T as EnvBase>::Error>
Bytes
of the contract which invoked the running contract. Traps if the running contract was not invoked by a contract.source§fn obj_cmp(&self, a: RawVal, b: RawVal) -> Result<i64, <T as EnvBase>::Error>
fn obj_cmp(&self, a: RawVal, b: RawVal) -> Result<i64, <T as EnvBase>::Error>
source§fn contract_event(
&self,
topics: VecObject,
data: RawVal
) -> Result<Void, <T as EnvBase>::Error>
fn contract_event( &self, topics: VecObject, data: RawVal ) -> Result<Void, <T as EnvBase>::Error>
topics
is expected to be a SCVec
with length <= 4 that cannot contain Vec
, Map
, or Bytes
with length > 32 On success, returns an SCStatus::Ok
.source§fn get_current_contract_id(&self) -> Result<BytesObject, <T as EnvBase>::Error>
fn get_current_contract_id(&self) -> Result<BytesObject, <T as EnvBase>::Error>
source§fn get_ledger_version(&self) -> Result<U32Val, <T as EnvBase>::Error>
fn get_ledger_version(&self) -> Result<U32Val, <T as EnvBase>::Error>
source§fn get_ledger_sequence(&self) -> Result<U32Val, <T as EnvBase>::Error>
fn get_ledger_sequence(&self) -> Result<U32Val, <T as EnvBase>::Error>
source§fn get_ledger_timestamp(&self) -> Result<U64Val, <T as EnvBase>::Error>
fn get_ledger_timestamp(&self) -> Result<U64Val, <T as EnvBase>::Error>
source§fn get_current_call_stack(&self) -> Result<VecObject, <T as EnvBase>::Error>
fn get_current_call_stack(&self) -> Result<VecObject, <T as EnvBase>::Error>
source§fn fail_with_status(
&self,
status: Status
) -> Result<Void, <T as EnvBase>::Error>
fn fail_with_status( &self, status: Status ) -> Result<Void, <T as EnvBase>::Error>
ScStatusType::ContractError
. Does not actually return.source§fn log_fmt_values(
&self,
fmt: StringObject,
args: VecObject
) -> Result<Void, <T as EnvBase>::Error>
fn log_fmt_values( &self, fmt: StringObject, args: VecObject ) -> Result<Void, <T as EnvBase>::Error>
source§fn get_ledger_network_id(&self) -> Result<BytesObject, <T as EnvBase>::Error>
fn get_ledger_network_id(&self) -> Result<BytesObject, <T as EnvBase>::Error>
Bytes
. The value is always 32 bytes in length.source§fn get_current_contract_address(
&self
) -> Result<AddressObject, <T as EnvBase>::Error>
fn get_current_contract_address( &self ) -> Result<AddressObject, <T as EnvBase>::Error>
source§fn obj_from_u64(&self, v: u64) -> Result<U64Object, <T as EnvBase>::Error>
fn obj_from_u64(&self, v: u64) -> Result<U64Object, <T as EnvBase>::Error>
source§fn obj_to_u64(&self, obj: U64Object) -> Result<u64, <T as EnvBase>::Error>
fn obj_to_u64(&self, obj: U64Object) -> Result<u64, <T as EnvBase>::Error>
source§fn obj_from_i64(&self, v: i64) -> Result<I64Object, <T as EnvBase>::Error>
fn obj_from_i64(&self, v: i64) -> Result<I64Object, <T as EnvBase>::Error>
source§fn obj_to_i64(&self, obj: I64Object) -> Result<i64, <T as EnvBase>::Error>
fn obj_to_i64(&self, obj: I64Object) -> Result<i64, <T as EnvBase>::Error>
source§fn obj_from_u128_pieces(
&self,
lo: u64,
hi: u64
) -> Result<U128Object, <T as EnvBase>::Error>
fn obj_from_u128_pieces( &self, lo: u64, hi: u64 ) -> Result<U128Object, <T as EnvBase>::Error>
source§fn obj_to_u128_lo64(
&self,
obj: U128Object
) -> Result<u64, <T as EnvBase>::Error>
fn obj_to_u128_lo64( &self, obj: U128Object ) -> Result<u64, <T as EnvBase>::Error>
source§fn obj_to_u128_hi64(
&self,
obj: U128Object
) -> Result<u64, <T as EnvBase>::Error>
fn obj_to_u128_hi64( &self, obj: U128Object ) -> Result<u64, <T as EnvBase>::Error>
source§fn obj_from_i128_pieces(
&self,
lo: u64,
hi: u64
) -> Result<I128Object, <T as EnvBase>::Error>
fn obj_from_i128_pieces( &self, lo: u64, hi: u64 ) -> Result<I128Object, <T as EnvBase>::Error>
source§fn obj_to_i128_lo64(
&self,
obj: I128Object
) -> Result<u64, <T as EnvBase>::Error>
fn obj_to_i128_lo64( &self, obj: I128Object ) -> Result<u64, <T as EnvBase>::Error>
source§fn obj_to_i128_hi64(
&self,
obj: I128Object
) -> Result<u64, <T as EnvBase>::Error>
fn obj_to_i128_hi64( &self, obj: I128Object ) -> Result<u64, <T as EnvBase>::Error>
source§fn map_put(
&self,
m: MapObject,
k: RawVal,
v: RawVal
) -> Result<MapObject, <T as EnvBase>::Error>
fn map_put( &self, m: MapObject, k: RawVal, v: RawVal ) -> Result<MapObject, <T as EnvBase>::Error>
source§fn map_get(
&self,
m: MapObject,
k: RawVal
) -> Result<RawVal, <T as EnvBase>::Error>
fn map_get( &self, m: MapObject, k: RawVal ) -> Result<RawVal, <T as EnvBase>::Error>
source§fn map_del(
&self,
m: MapObject,
k: RawVal
) -> Result<MapObject, <T as EnvBase>::Error>
fn map_del( &self, m: MapObject, k: RawVal ) -> Result<MapObject, <T as EnvBase>::Error>
source§fn map_len(&self, m: MapObject) -> Result<U32Val, <T as EnvBase>::Error>
fn map_len(&self, m: MapObject) -> Result<U32Val, <T as EnvBase>::Error>
source§fn map_has(
&self,
m: MapObject,
k: RawVal
) -> Result<Bool, <T as EnvBase>::Error>
fn map_has( &self, m: MapObject, k: RawVal ) -> Result<Bool, <T as EnvBase>::Error>
source§fn map_prev_key(
&self,
m: MapObject,
k: RawVal
) -> Result<RawVal, <T as EnvBase>::Error>
fn map_prev_key( &self, m: MapObject, k: RawVal ) -> Result<RawVal, <T as EnvBase>::Error>
source§fn map_next_key(
&self,
m: MapObject,
k: RawVal
) -> Result<RawVal, <T as EnvBase>::Error>
fn map_next_key( &self, m: MapObject, k: RawVal ) -> Result<RawVal, <T as EnvBase>::Error>
source§fn map_min_key(&self, m: MapObject) -> Result<RawVal, <T as EnvBase>::Error>
fn map_min_key(&self, m: MapObject) -> Result<RawVal, <T as EnvBase>::Error>
source§fn map_max_key(&self, m: MapObject) -> Result<RawVal, <T as EnvBase>::Error>
fn map_max_key(&self, m: MapObject) -> Result<RawVal, <T as EnvBase>::Error>
source§fn map_keys(&self, m: MapObject) -> Result<VecObject, <T as EnvBase>::Error>
fn map_keys(&self, m: MapObject) -> Result<VecObject, <T as EnvBase>::Error>
source§fn map_values(&self, m: MapObject) -> Result<VecObject, <T as EnvBase>::Error>
fn map_values(&self, m: MapObject) -> Result<VecObject, <T as EnvBase>::Error>
source§fn map_new_from_linear_memory(
&self,
keys_pos: U32Val,
vals_pos: U32Val,
len: U32Val
) -> Result<MapObject, <T as EnvBase>::Error>
fn map_new_from_linear_memory( &self, keys_pos: U32Val, vals_pos: U32Val, len: U32Val ) -> Result<MapObject, <T as EnvBase>::Error>
source§fn map_unpack_to_linear_memory(
&self,
map: MapObject,
keys_pos: U32Val,
vals_pos: U32Val,
len: U32Val
) -> Result<Void, <T as EnvBase>::Error>
fn map_unpack_to_linear_memory( &self, map: MapObject, keys_pos: U32Val, vals_pos: U32Val, len: U32Val ) -> Result<Void, <T as EnvBase>::Error>
source§fn vec_new(&self, c: RawVal) -> Result<VecObject, <T as EnvBase>::Error>
fn vec_new(&self, c: RawVal) -> Result<VecObject, <T as EnvBase>::Error>
c
. If c
is ScStatic::Void
, no hint is assumed and the new vector is empty. Otherwise, c
is parsed as an u32
that represents the initial capacity of the new vector.source§fn vec_put(
&self,
v: VecObject,
i: U32Val,
x: RawVal
) -> Result<VecObject, <T as EnvBase>::Error>
fn vec_put( &self, v: VecObject, i: U32Val, x: RawVal ) -> Result<VecObject, <T as EnvBase>::Error>
i
in the vector. Return the new vector. Trap if the index is out of bounds.source§fn vec_get(
&self,
v: VecObject,
i: U32Val
) -> Result<RawVal, <T as EnvBase>::Error>
fn vec_get( &self, v: VecObject, i: U32Val ) -> Result<RawVal, <T as EnvBase>::Error>
i
of the vector. Traps if the index is out of bound.source§fn vec_del(
&self,
v: VecObject,
i: U32Val
) -> Result<VecObject, <T as EnvBase>::Error>
fn vec_del( &self, v: VecObject, i: U32Val ) -> Result<VecObject, <T as EnvBase>::Error>
i
, shifting all elements after it to the left. Return the new vector. Traps if the index is out of bound.source§fn vec_len(&self, v: VecObject) -> Result<U32Val, <T as EnvBase>::Error>
fn vec_len(&self, v: VecObject) -> Result<U32Val, <T as EnvBase>::Error>
source§fn vec_push_front(
&self,
v: VecObject,
x: RawVal
) -> Result<VecObject, <T as EnvBase>::Error>
fn vec_push_front( &self, v: VecObject, x: RawVal ) -> Result<VecObject, <T as EnvBase>::Error>
source§fn vec_pop_front(
&self,
v: VecObject
) -> Result<VecObject, <T as EnvBase>::Error>
fn vec_pop_front( &self, v: VecObject ) -> Result<VecObject, <T as EnvBase>::Error>
source§fn vec_push_back(
&self,
v: VecObject,
x: RawVal
) -> Result<VecObject, <T as EnvBase>::Error>
fn vec_push_back( &self, v: VecObject, x: RawVal ) -> Result<VecObject, <T as EnvBase>::Error>
source§fn vec_pop_back(&self, v: VecObject) -> Result<VecObject, <T as EnvBase>::Error>
fn vec_pop_back(&self, v: VecObject) -> Result<VecObject, <T as EnvBase>::Error>
source§fn vec_front(&self, v: VecObject) -> Result<RawVal, <T as EnvBase>::Error>
fn vec_front(&self, v: VecObject) -> Result<RawVal, <T as EnvBase>::Error>
source§fn vec_back(&self, v: VecObject) -> Result<RawVal, <T as EnvBase>::Error>
fn vec_back(&self, v: VecObject) -> Result<RawVal, <T as EnvBase>::Error>
source§fn vec_insert(
&self,
v: VecObject,
i: U32Val,
x: RawVal
) -> Result<VecObject, <T as EnvBase>::Error>
fn vec_insert( &self, v: VecObject, i: U32Val, x: RawVal ) -> Result<VecObject, <T as EnvBase>::Error>
i
within the vector, shifting all elements after it to the right. Traps if the index is out of boundsource§fn vec_append(
&self,
v1: VecObject,
v2: VecObject
) -> Result<VecObject, <T as EnvBase>::Error>
fn vec_append( &self, v1: VecObject, v2: VecObject ) -> Result<VecObject, <T as EnvBase>::Error>
v1
, then moves all the elements of vector v2
into it. Return the new vector. Traps if number of elements in the vector overflows a u32.source§fn vec_slice(
&self,
v: VecObject,
start: U32Val,
end: U32Val
) -> Result<VecObject, <T as EnvBase>::Error>
fn vec_slice( &self, v: VecObject, start: U32Val, end: U32Val ) -> Result<VecObject, <T as EnvBase>::Error>
start
index until end
index, exclusive, in the vector and create a new vector from it. Return the new vector. Traps if the index is out of bound.source§fn vec_first_index_of(
&self,
v: VecObject,
x: RawVal
) -> Result<RawVal, <T as EnvBase>::Error>
fn vec_first_index_of( &self, v: VecObject, x: RawVal ) -> Result<RawVal, <T as EnvBase>::Error>
ScStatic::Void
.source§fn vec_last_index_of(
&self,
v: VecObject,
x: RawVal
) -> Result<RawVal, <T as EnvBase>::Error>
fn vec_last_index_of( &self, v: VecObject, x: RawVal ) -> Result<RawVal, <T as EnvBase>::Error>
ScStatic::Void
.source§fn vec_binary_search(
&self,
v: VecObject,
x: RawVal
) -> Result<u64, <T as EnvBase>::Error>
fn vec_binary_search( &self, v: VecObject, x: RawVal ) -> Result<u64, <T as EnvBase>::Error>
source§fn vec_new_from_linear_memory(
&self,
vals_pos: U32Val,
len: U32Val
) -> Result<VecObject, <T as EnvBase>::Error>
fn vec_new_from_linear_memory( &self, vals_pos: U32Val, len: U32Val ) -> Result<VecObject, <T as EnvBase>::Error>
source§fn vec_unpack_to_linear_memory(
&self,
vec: VecObject,
vals_pos: U32Val,
len: U32Val
) -> Result<Void, <T as EnvBase>::Error>
fn vec_unpack_to_linear_memory( &self, vec: VecObject, vals_pos: U32Val, len: U32Val ) -> Result<Void, <T as EnvBase>::Error>
fn put_contract_data( &self, k: RawVal, v: RawVal ) -> Result<RawVal, <T as EnvBase>::Error>
fn has_contract_data(&self, k: RawVal) -> Result<Bool, <T as EnvBase>::Error>
fn get_contract_data(&self, k: RawVal) -> Result<RawVal, <T as EnvBase>::Error>
fn del_contract_data(&self, k: RawVal) -> Result<RawVal, <T as EnvBase>::Error>
source§fn create_contract_from_contract(
&self,
wasm_hash: BytesObject,
salt: BytesObject
) -> Result<BytesObject, <T as EnvBase>::Error>
fn create_contract_from_contract( &self, wasm_hash: BytesObject, salt: BytesObject ) -> Result<BytesObject, <T as EnvBase>::Error>
wasm_hash
must be a hash of the contract code that has already been installed on this network. salt
is used to create a unique contract id.source§fn call(
&self,
contract: BytesObject,
func: Symbol,
args: VecObject
) -> Result<RawVal, <T as EnvBase>::Error>
fn call( &self, contract: BytesObject, func: Symbol, args: VecObject ) -> Result<RawVal, <T as EnvBase>::Error>
args
. If the call is successful, forwards the result of the called function. Traps otherwise.source§fn try_call(
&self,
contract: BytesObject,
func: Symbol,
args: VecObject
) -> Result<RawVal, <T as EnvBase>::Error>
fn try_call( &self, contract: BytesObject, func: Symbol, args: VecObject ) -> Result<RawVal, <T as EnvBase>::Error>
args
. Returns: - if successful, result of the called function. - otherwise, an SCStatus
containing the error status code.source§fn serialize_to_bytes(
&self,
v: RawVal
) -> Result<BytesObject, <T as EnvBase>::Error>
fn serialize_to_bytes( &self, v: RawVal ) -> Result<BytesObject, <T as EnvBase>::Error>
Bytes
object.source§fn deserialize_from_bytes(
&self,
b: BytesObject
) -> Result<RawVal, <T as EnvBase>::Error>
fn deserialize_from_bytes( &self, b: BytesObject ) -> Result<RawVal, <T as EnvBase>::Error>
Bytes
object to get back the (SC)Val.source§fn bytes_copy_to_linear_memory(
&self,
b: BytesObject,
b_pos: U32Val,
lm_pos: U32Val,
len: U32Val
) -> Result<Void, <T as EnvBase>::Error>
fn bytes_copy_to_linear_memory( &self, b: BytesObject, b_pos: U32Val, lm_pos: U32Val, len: U32Val ) -> Result<Void, <T as EnvBase>::Error>
Bytes
object specified at offset b_pos
with length len
into the linear memory at position lm_pos
. Traps if either the Bytes
object or the linear memory doesn’t have enough bytes.source§fn bytes_copy_from_linear_memory(
&self,
b: BytesObject,
b_pos: U32Val,
lm_pos: U32Val,
len: U32Val
) -> Result<BytesObject, <T as EnvBase>::Error>
fn bytes_copy_from_linear_memory( &self, b: BytesObject, b_pos: U32Val, lm_pos: U32Val, len: U32Val ) -> Result<BytesObject, <T as EnvBase>::Error>
lm_pos
with length len
, into a Bytes
object at offset b_pos
. The Bytes
object may grow in size to accommodate the new bytes. Traps if the linear memory doesn’t have enough bytes.source§fn bytes_new_from_linear_memory(
&self,
lm_pos: U32Val,
len: U32Val
) -> Result<BytesObject, <T as EnvBase>::Error>
fn bytes_new_from_linear_memory( &self, lm_pos: U32Val, len: U32Val ) -> Result<BytesObject, <T as EnvBase>::Error>
Bytes
object initialized with bytes copied from a linear memory slice specified at position lm_pos
with length len
.source§fn bytes_new(&self) -> Result<BytesObject, <T as EnvBase>::Error>
fn bytes_new(&self) -> Result<BytesObject, <T as EnvBase>::Error>
Bytes
object.source§fn bytes_put(
&self,
b: BytesObject,
i: U32Val,
u: U32Val
) -> Result<BytesObject, <T as EnvBase>::Error>
fn bytes_put( &self, b: BytesObject, i: U32Val, u: U32Val ) -> Result<BytesObject, <T as EnvBase>::Error>
i
in the Bytes
object. Return the new Bytes
. Trap if the index is out of bounds.source§fn bytes_get(
&self,
b: BytesObject,
i: U32Val
) -> Result<U32Val, <T as EnvBase>::Error>
fn bytes_get( &self, b: BytesObject, i: U32Val ) -> Result<U32Val, <T as EnvBase>::Error>
i
of the Bytes
object. Traps if the index is out of bound.source§fn bytes_del(
&self,
b: BytesObject,
i: U32Val
) -> Result<BytesObject, <T as EnvBase>::Error>
fn bytes_del( &self, b: BytesObject, i: U32Val ) -> Result<BytesObject, <T as EnvBase>::Error>
Bytes
object at index i
, shifting all elements after it to the left. Return the new Bytes
. Traps if the index is out of bound.source§fn bytes_len(&self, b: BytesObject) -> Result<U32Val, <T as EnvBase>::Error>
fn bytes_len(&self, b: BytesObject) -> Result<U32Val, <T as EnvBase>::Error>
Bytes
object.source§fn bytes_push(
&self,
b: BytesObject,
u: U32Val
) -> Result<BytesObject, <T as EnvBase>::Error>
fn bytes_push( &self, b: BytesObject, u: U32Val ) -> Result<BytesObject, <T as EnvBase>::Error>
Bytes
object.source§fn bytes_pop(
&self,
b: BytesObject
) -> Result<BytesObject, <T as EnvBase>::Error>
fn bytes_pop( &self, b: BytesObject ) -> Result<BytesObject, <T as EnvBase>::Error>
Bytes
object and returns the new Bytes
. Traps if original Bytes
is empty.source§fn bytes_front(&self, b: BytesObject) -> Result<U32Val, <T as EnvBase>::Error>
fn bytes_front(&self, b: BytesObject) -> Result<U32Val, <T as EnvBase>::Error>
Bytes
object. Traps if the Bytes
is emptysource§fn bytes_back(&self, b: BytesObject) -> Result<U32Val, <T as EnvBase>::Error>
fn bytes_back(&self, b: BytesObject) -> Result<U32Val, <T as EnvBase>::Error>
Bytes
object. Traps if the Bytes
is emptysource§fn bytes_insert(
&self,
b: BytesObject,
i: U32Val,
u: U32Val
) -> Result<BytesObject, <T as EnvBase>::Error>
fn bytes_insert( &self, b: BytesObject, i: U32Val, u: U32Val ) -> Result<BytesObject, <T as EnvBase>::Error>
i
within the Bytes
object, shifting all elements after it to the right. Traps if the index is out of boundsource§fn bytes_append(
&self,
b1: BytesObject,
b2: BytesObject
) -> Result<BytesObject, <T as EnvBase>::Error>
fn bytes_append( &self, b1: BytesObject, b2: BytesObject ) -> Result<BytesObject, <T as EnvBase>::Error>
Bytes
object b1
, then moves all the elements of Bytes
object b2
into it. Return the new Bytes
. Traps if its length overflows a u32.source§fn bytes_slice(
&self,
b: BytesObject,
start: U32Val,
end: U32Val
) -> Result<BytesObject, <T as EnvBase>::Error>
fn bytes_slice( &self, b: BytesObject, start: U32Val, end: U32Val ) -> Result<BytesObject, <T as EnvBase>::Error>
start
index until end
index, exclusive, in the Bytes
object and creates a new Bytes
from it. Returns the new Bytes
. Traps if the index is out of bound.source§fn string_copy_to_linear_memory(
&self,
s: StringObject,
s_pos: U32Val,
lm_pos: U32Val,
len: U32Val
) -> Result<Void, <T as EnvBase>::Error>
fn string_copy_to_linear_memory( &self, s: StringObject, s_pos: U32Val, lm_pos: U32Val, len: U32Val ) -> Result<Void, <T as EnvBase>::Error>
String
object specified at offset s_pos
with length len
into the linear memory at position lm_pos
. Traps if either the String
object or the linear memory doesn’t have enough bytes.source§fn symbol_copy_to_linear_memory(
&self,
s: SymbolObject,
s_pos: U32Val,
lm_pos: U32Val,
len: U32Val
) -> Result<Void, <T as EnvBase>::Error>
fn symbol_copy_to_linear_memory( &self, s: SymbolObject, s_pos: U32Val, lm_pos: U32Val, len: U32Val ) -> Result<Void, <T as EnvBase>::Error>
Symbol
object specified at offset s_pos
with length len
into the linear memory at position lm_pos
. Traps if either the String
object or the linear memory doesn’t have enough bytes.source§fn string_new_from_linear_memory(
&self,
lm_pos: U32Val,
len: U32Val
) -> Result<StringObject, <T as EnvBase>::Error>
fn string_new_from_linear_memory( &self, lm_pos: U32Val, len: U32Val ) -> Result<StringObject, <T as EnvBase>::Error>
String
object initialized with bytes copied from a linear memory slice specified at position lm_pos
with length len
.source§fn symbol_new_from_linear_memory(
&self,
lm_pos: U32Val,
len: U32Val
) -> Result<SymbolObject, <T as EnvBase>::Error>
fn symbol_new_from_linear_memory( &self, lm_pos: U32Val, len: U32Val ) -> Result<SymbolObject, <T as EnvBase>::Error>
Symbol
object initialized with bytes copied from a linear memory slice specified at position lm_pos
with length len
.source§fn string_len(&self, s: StringObject) -> Result<U32Val, <T as EnvBase>::Error>
fn string_len(&self, s: StringObject) -> Result<U32Val, <T as EnvBase>::Error>
String
object.source§fn symbol_len(&self, s: SymbolObject) -> Result<U32Val, <T as EnvBase>::Error>
fn symbol_len(&self, s: SymbolObject) -> Result<U32Val, <T as EnvBase>::Error>
Symbol
object.source§fn symbol_index_in_linear_memory(
&self,
sym: Symbol,
slices_pos: U32Val,
len: U32Val
) -> Result<U32Val, <T as EnvBase>::Error>
fn symbol_index_in_linear_memory( &self, sym: Symbol, slices_pos: U32Val, len: U32Val ) -> Result<U32Val, <T as EnvBase>::Error>
fn compute_hash_sha256( &self, x: BytesObject ) -> Result<BytesObject, <T as EnvBase>::Error>
fn verify_sig_ed25519( &self, x: BytesObject, k: BytesObject, s: BytesObject ) -> Result<Void, <T as EnvBase>::Error>
source§fn require_auth_for_args(
&self,
address: AddressObject,
args: VecObject
) -> Result<RawVal, <T as EnvBase>::Error>
fn require_auth_for_args( &self, address: AddressObject, args: VecObject ) -> Result<RawVal, <T as EnvBase>::Error>
source§fn require_auth(
&self,
address: AddressObject
) -> Result<RawVal, <T as EnvBase>::Error>
fn require_auth( &self, address: AddressObject ) -> Result<RawVal, <T as EnvBase>::Error>
source§fn account_public_key_to_address(
&self,
pk_bytes: BytesObject
) -> Result<AddressObject, <T as EnvBase>::Error>
fn account_public_key_to_address( &self, pk_bytes: BytesObject ) -> Result<AddressObject, <T as EnvBase>::Error>
source§fn contract_id_to_address(
&self,
contract_id_bytes: BytesObject
) -> Result<AddressObject, <T as EnvBase>::Error>
fn contract_id_to_address( &self, contract_id_bytes: BytesObject ) -> Result<AddressObject, <T as EnvBase>::Error>
source§fn address_to_account_public_key(
&self,
address: AddressObject
) -> Result<RawVal, <T as EnvBase>::Error>
fn address_to_account_public_key( &self, address: AddressObject ) -> Result<RawVal, <T as EnvBase>::Error>
()
).source§fn address_to_contract_id(
&self,
address: AddressObject
) -> Result<RawVal, <T as EnvBase>::Error>
fn address_to_contract_id( &self, address: AddressObject ) -> Result<RawVal, <T as EnvBase>::Error>
()
).