#[non_exhaustive]#[repr(i32)]pub enum Contract {
kNative {
native_contract_id: HogexecPrecompiledNativeContracts,
},
kMockTest {
mock_contract_id: i32,
},
kRv32 {
rv32_contract: ContractBlob,
},
}Expand description
A contract that can be deployed to an address and invoked.
Contracts are the fundamental unit of code execution in Thruput.
Once deployed to a ContractAddress, they can be invoked by transactions
to execute their methods (entrypoints).
The three contract types serve different purposes:
kRv32: User-deployed contracts (most common)kNative: System contracts with privileged accesskMockTest: Test contracts for local development
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
kNative
Identifier for which native contract this is.
Native contracts are hard-coded in the runtime.
Fields
§
native_contract_id: HogexecPrecompiledNativeContractskMockTest
Identifier for the mock contract in the test harness.
kRv32
Fields
§
rv32_contract: ContractBlobImplementations§
Source§impl Contract
impl Contract
pub fn contract_type(&self) -> ContractType
Trait Implementations§
Source§impl ConstMaxSize for Contract
impl ConstMaxSize for Contract
Source§impl ConstMaxSize for Contract
impl ConstMaxSize for Contract
impl EncodesAs<Contract> for Contract
impl Eq for Contract
Source§impl JsonSchema for Contract
impl JsonSchema for Contract
Source§fn schema_id() -> Cow<'static, str>
fn schema_id() -> Cow<'static, str>
Returns a string that uniquely identifies the schema produced by this type. Read more
Source§fn json_schema(generator: &mut SchemaGenerator) -> Schema
fn json_schema(generator: &mut SchemaGenerator) -> Schema
Generates a JSON Schema for this type. Read more
Source§fn inline_schema() -> bool
fn inline_schema() -> bool
Whether JSON Schemas generated for this type should be included directly in parent schemas,
rather than being re-used where possible using the
$ref keyword. Read moreSource§impl Ord for Contract
impl Ord for Contract
1.21.0 (const: unstable) · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
Compares and returns the maximum of two values. Read more
1.21.0 (const: unstable) · Source§fn min(self, other: Self) -> Selfwhere
Self: Sized,
fn min(self, other: Self) -> Selfwhere
Self: Sized,
Compares and returns the minimum of two values. Read more
Source§impl PartialOrd for Contract
impl PartialOrd for Contract
Source§impl<'_r> ReadXDR<'_r> for Contract
impl<'_r> ReadXDR<'_r> for Contract
impl StructuralPartialEq for Contract
Source§impl WriteXDR for Contract
impl WriteXDR for Contract
Source§fn write_xdr<F, W>(&self, __write_xdr_writer: &mut W) -> Result<(), WriteError>where
W: Writer<F>,
fn write_xdr<F, W>(&self, __write_xdr_writer: &mut W) -> Result<(), WriteError>where
W: Writer<F>,
Writes this value as XDR data to the writer. Read more
Source§unsafe fn write_xdr_unchecked<F, W>(&self, __write_xdr_writer: &mut W)where
W: WriterUnchecked<F>,
unsafe fn write_xdr_unchecked<F, W>(&self, __write_xdr_writer: &mut W)where
W: WriterUnchecked<F>,
Writes this value as XDR data to the writer, without runtime checks. Read more
Auto Trait Implementations§
impl Freeze for Contract
impl RefUnwindSafe for Contract
impl Send for Contract
impl Sync for Contract
impl Unpin for Contract
impl UnsafeUnpin for Contract
impl UnwindSafe for Contract
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more