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_executable_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, executable: 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: ContractCostType, input: Option<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_functions( &self, host_fns: Vec<HostFunction> ) -> Result<Vec<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>
pub fn reset_temp_storage(&self)
sourcepub fn system_event(
&self,
topics: VecObject,
data: RawVal
) -> Result<(), HostError>
pub fn system_event( &self, topics: VecObject, data: RawVal ) -> Result<(), 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
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
Host: Compare<K, Error = HostError> + Compare<V, Error = HostError>,
impl<K, V> Compare<MeteredOrdMap<K, V, Host>> for Hostwhere 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
RawVals. 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>,
hi: u64,
lo: u64
) -> Result<U128Object, Self::Error>
fn obj_from_u128_pieces( &self, vmcaller: &mut VmCaller<'_, Self::VmUserState>, hi: u64, lo: 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>,
hi: i64,
lo: u64
) -> Result<I128Object, Self::Error>
fn obj_from_i128_pieces( &self, vmcaller: &mut VmCaller<'_, Self::VmUserState>, hi: i64, lo: 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<i64, Self::Error>
fn obj_to_i128_hi64( &self, vmcaller: &mut VmCaller<'_, Self::VmUserState>, obj: I128Object ) -> Result<i64, Self::Error>
source§fn obj_from_u256_pieces(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
hi_hi: u64,
hi_lo: u64,
lo_hi: u64,
lo_lo: u64
) -> Result<U256Object, Self::Error>
fn obj_from_u256_pieces( &self, vmcaller: &mut VmCaller<'_, Self::VmUserState>, hi_hi: u64, hi_lo: u64, lo_hi: u64, lo_lo: u64 ) -> Result<U256Object, Self::Error>
source§fn obj_to_u256_hi_hi(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
obj: U256Object
) -> Result<u64, HostError>
fn obj_to_u256_hi_hi( &self, vmcaller: &mut VmCaller<'_, Self::VmUserState>, obj: U256Object ) -> Result<u64, HostError>
source§fn obj_to_u256_hi_lo(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
obj: U256Object
) -> Result<u64, HostError>
fn obj_to_u256_hi_lo( &self, vmcaller: &mut VmCaller<'_, Self::VmUserState>, obj: U256Object ) -> Result<u64, HostError>
source§fn obj_to_u256_lo_hi(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
obj: U256Object
) -> Result<u64, HostError>
fn obj_to_u256_lo_hi( &self, vmcaller: &mut VmCaller<'_, Self::VmUserState>, obj: U256Object ) -> Result<u64, HostError>
source§fn obj_to_u256_lo_lo(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
obj: U256Object
) -> Result<u64, HostError>
fn obj_to_u256_lo_lo( &self, vmcaller: &mut VmCaller<'_, Self::VmUserState>, obj: U256Object ) -> Result<u64, HostError>
source§fn obj_from_i256_pieces(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
hi_hi: i64,
hi_lo: u64,
lo_hi: u64,
lo_lo: u64
) -> Result<I256Object, Self::Error>
fn obj_from_i256_pieces( &self, vmcaller: &mut VmCaller<'_, Self::VmUserState>, hi_hi: i64, hi_lo: u64, lo_hi: u64, lo_lo: u64 ) -> Result<I256Object, Self::Error>
source§fn obj_to_i256_hi_hi(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
obj: I256Object
) -> Result<i64, HostError>
fn obj_to_i256_hi_hi( &self, vmcaller: &mut VmCaller<'_, Self::VmUserState>, obj: I256Object ) -> Result<i64, HostError>
source§fn obj_to_i256_hi_lo(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
obj: I256Object
) -> Result<u64, HostError>
fn obj_to_i256_hi_lo( &self, vmcaller: &mut VmCaller<'_, Self::VmUserState>, obj: I256Object ) -> Result<u64, HostError>
source§fn obj_to_i256_lo_hi(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
obj: I256Object
) -> Result<u64, HostError>
fn obj_to_i256_lo_hi( &self, vmcaller: &mut VmCaller<'_, Self::VmUserState>, obj: I256Object ) -> Result<u64, HostError>
source§fn obj_to_i256_lo_lo(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
obj: I256Object
) -> Result<u64, HostError>
fn obj_to_i256_lo_lo( &self, vmcaller: &mut VmCaller<'_, Self::VmUserState>, obj: I256Object ) -> Result<u64, HostError>
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<Void, 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<Void, 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.fn put_tmp_contract_data( &self, _vmcaller: &mut VmCaller<'_, Host>, k: RawVal, v: RawVal ) -> Result<Void, HostError>
fn has_tmp_contract_data( &self, _vmcaller: &mut VmCaller<'_, Host>, k: RawVal ) -> Result<Bool, HostError>
fn get_tmp_contract_data( &self, _vmcaller: &mut VmCaller<'_, Host>, k: RawVal ) -> Result<RawVal, HostError>
fn del_tmp_contract_data( &self, _vmcaller: &mut VmCaller<'_, Host>, k: RawVal ) -> Result<Void, HostError>
source§fn update_current_contract_wasm(
&self,
_vmcaller: &mut VmCaller<'_, Host>,
hash: BytesObject
) -> Result<Void, HostError>
fn update_current_contract_wasm( &self, _vmcaller: &mut VmCaller<'_, Host>, hash: BytesObject ) -> Result<Void, HostError>
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>, k: BytesObject, x: 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> 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
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,
hi: u64,
lo: u64
) -> Result<U128Object, <T as EnvBase>::Error>
fn obj_from_u128_pieces( &self, hi: u64, lo: 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,
hi: i64,
lo: u64
) -> Result<I128Object, <T as EnvBase>::Error>
fn obj_from_i128_pieces( &self, hi: i64, lo: 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<i64, <T as EnvBase>::Error>
fn obj_to_i128_hi64( &self, obj: I128Object ) -> Result<i64, <T as EnvBase>::Error>
source§fn obj_from_u256_pieces(
&self,
hi_hi: u64,
hi_lo: u64,
lo_hi: u64,
lo_lo: u64
) -> Result<U256Object, <T as EnvBase>::Error>
fn obj_from_u256_pieces( &self, hi_hi: u64, hi_lo: u64, lo_hi: u64, lo_lo: u64 ) -> Result<U256Object, <T as EnvBase>::Error>
source§fn obj_to_u256_hi_hi(
&self,
obj: U256Object
) -> Result<u64, <T as EnvBase>::Error>
fn obj_to_u256_hi_hi( &self, obj: U256Object ) -> Result<u64, <T as EnvBase>::Error>
source§fn obj_to_u256_hi_lo(
&self,
obj: U256Object
) -> Result<u64, <T as EnvBase>::Error>
fn obj_to_u256_hi_lo( &self, obj: U256Object ) -> Result<u64, <T as EnvBase>::Error>
source§fn obj_to_u256_lo_hi(
&self,
obj: U256Object
) -> Result<u64, <T as EnvBase>::Error>
fn obj_to_u256_lo_hi( &self, obj: U256Object ) -> Result<u64, <T as EnvBase>::Error>
source§fn obj_to_u256_lo_lo(
&self,
obj: U256Object
) -> Result<u64, <T as EnvBase>::Error>
fn obj_to_u256_lo_lo( &self, obj: U256Object ) -> Result<u64, <T as EnvBase>::Error>
source§fn obj_from_i256_pieces(
&self,
hi_hi: i64,
hi_lo: u64,
lo_hi: u64,
lo_lo: u64
) -> Result<I256Object, <T as EnvBase>::Error>
fn obj_from_i256_pieces( &self, hi_hi: i64, hi_lo: u64, lo_hi: u64, lo_lo: u64 ) -> Result<I256Object, <T as EnvBase>::Error>
source§fn obj_to_i256_hi_hi(
&self,
obj: I256Object
) -> Result<i64, <T as EnvBase>::Error>
fn obj_to_i256_hi_hi( &self, obj: I256Object ) -> Result<i64, <T as EnvBase>::Error>
source§fn obj_to_i256_hi_lo(
&self,
obj: I256Object
) -> Result<u64, <T as EnvBase>::Error>
fn obj_to_i256_hi_lo( &self, obj: I256Object ) -> Result<u64, <T as EnvBase>::Error>
source§fn obj_to_i256_lo_hi(
&self,
obj: I256Object
) -> Result<u64, <T as EnvBase>::Error>
fn obj_to_i256_lo_hi( &self, obj: I256Object ) -> Result<u64, <T as EnvBase>::Error>
source§fn obj_to_i256_lo_lo(
&self,
obj: I256Object
) -> Result<u64, <T as EnvBase>::Error>
fn obj_to_i256_lo_lo( &self, obj: I256Object ) -> 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<Void, <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<Void, <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.fn put_tmp_contract_data( &self, k: RawVal, v: RawVal ) -> Result<Void, <T as EnvBase>::Error>
fn has_tmp_contract_data( &self, k: RawVal ) -> Result<Bool, <T as EnvBase>::Error>
fn get_tmp_contract_data( &self, k: RawVal ) -> Result<RawVal, <T as EnvBase>::Error>
fn del_tmp_contract_data( &self, k: RawVal ) -> Result<Void, <T as EnvBase>::Error>
source§fn update_current_contract_wasm(
&self,
hash: BytesObject
) -> Result<Void, <T as EnvBase>::Error>
fn update_current_contract_wasm( &self, hash: BytesObject ) -> Result<Void, <T as EnvBase>::Error>
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, k: BytesObject, x: 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>
()).