pub enum VersionedModuleSchema {
V0(ModuleV0),
V1(ModuleV1),
V2(ModuleV2),
V3(ModuleV3),
}Expand description
Represents the different schema versions.
The serialization of this type includes the versioning information. The serialization of this is always prefixed with two 255u8 in order to distinguish this versioned schema from the unversioned.
When embedded into a smart contract module, name the custom section
concordium-schema.
Variants§
V0(ModuleV0)
Version 0 schema, only supported by V0 smart contracts.
V1(ModuleV1)
Version 1 schema, only supported by V1 smart contracts.
V2(ModuleV2)
Version 2 schema, only supported by V1 smart contracts.
V3(ModuleV3)
Version 3 schema, only supported by V1 smart contracts.
Implementations§
Source§impl VersionedModuleSchema
impl VersionedModuleSchema
Sourcepub fn new(
schema_bytes: &[u8],
schema_version: &Option<u8>,
) -> Result<VersionedModuleSchema, VersionedSchemaError>
pub fn new( schema_bytes: &[u8], schema_version: &Option<u8>, ) -> Result<VersionedModuleSchema, VersionedSchemaError>
Get a versioned module schema. First reads header to see if the version can be discerned, otherwise tries using provided schema_version.
Sourcepub fn from_base64_str(
s: &str,
) -> Result<VersionedModuleSchema, VersionedSchemaError>
pub fn from_base64_str( s: &str, ) -> Result<VersionedModuleSchema, VersionedSchemaError>
Get a versioned module schema from a base64 string.
Sourcepub fn get_receive_param_schema(
&self,
contract_name: &str,
function_name: &str,
) -> Result<Type, VersionedSchemaError>
pub fn get_receive_param_schema( &self, contract_name: &str, function_name: &str, ) -> Result<Type, VersionedSchemaError>
Returns a receive function’s parameter schema from a versioned module schema
Sourcepub fn get_init_param_schema(
&self,
contract_name: &str,
) -> Result<Type, VersionedSchemaError>
pub fn get_init_param_schema( &self, contract_name: &str, ) -> Result<Type, VersionedSchemaError>
Returns an init function’s parameter schema from a versioned module schema
pub fn get_event_schema( &self, contract_name: &str, ) -> Result<Type, VersionedSchemaError>
Sourcepub fn get_receive_error_schema(
&self,
contract_name: &str,
function_name: &str,
) -> Result<Type, VersionedSchemaError>
pub fn get_receive_error_schema( &self, contract_name: &str, function_name: &str, ) -> Result<Type, VersionedSchemaError>
Returns a receive function’s error schema from a versioned module schema
Sourcepub fn get_init_error_schema(
&self,
contract_name: &str,
) -> Result<Type, VersionedSchemaError>
pub fn get_init_error_schema( &self, contract_name: &str, ) -> Result<Type, VersionedSchemaError>
Returns an init function’s error schema from a versioned module schema
Sourcepub fn get_receive_return_value_schema(
&self,
contract_name: &str,
function_name: &str,
) -> Result<Type, VersionedSchemaError>
pub fn get_receive_return_value_schema( &self, contract_name: &str, function_name: &str, ) -> Result<Type, VersionedSchemaError>
Returns the return value schema from a versioned module schema.
Trait Implementations§
Source§impl Clone for VersionedModuleSchema
impl Clone for VersionedModuleSchema
Source§fn clone(&self) -> VersionedModuleSchema
fn clone(&self) -> VersionedModuleSchema
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for VersionedModuleSchema
impl Debug for VersionedModuleSchema
Source§impl Deserial for VersionedModuleSchema
impl Deserial for VersionedModuleSchema
Source§fn deserial<R>(source: &mut R) -> Result<VersionedModuleSchema, ParseError>where
R: Read,
fn deserial<R>(source: &mut R) -> Result<VersionedModuleSchema, ParseError>where
R: Read,
Source§impl Display for VersionedModuleSchema
Displays a pretty-printed template of the VersionedModuleSchema.
impl Display for VersionedModuleSchema
Displays a pretty-printed template of the VersionedModuleSchema.
§Examples
§Display a template of the VersionedModuleSchema
let mut receive_function_map = BTreeMap::new();
receive_function_map.insert(String::from("MyFunction"), FunctionV2 {
parameter: Some(Type::AccountAddress),
error: Some(Type::AccountAddress),
return_value: Some(Type::AccountAddress),
});
let mut map = BTreeMap::new();
map.insert(String::from("MyContract"), ContractV3 {
init: Some(FunctionV2 {
parameter: Some(Type::AccountAddress),
error: Some(Type::AccountAddress),
return_value: Some(Type::AccountAddress),
}),
receive: receive_function_map,
event: Some(Type::AccountAddress),
});
let schema = VersionedModuleSchema::V3(ModuleV3 {
contracts: map,
});
let display = "Contract: MyContract
Init:
Parameter:
\"<AccountAddress>\"
Error:
\"<AccountAddress>\"
Return value:
\"<AccountAddress>\"
Methods:
- \"MyFunction\"
Parameter:
\"<AccountAddress>\"
Error:
\"<AccountAddress>\"
Return value:
\"<AccountAddress>\"
Event:
\"<AccountAddress>\"\n";
assert_eq!(display, format!("{}", schema));Auto Trait Implementations§
impl Freeze for VersionedModuleSchema
impl RefUnwindSafe for VersionedModuleSchema
impl Send for VersionedModuleSchema
impl Sync for VersionedModuleSchema
impl Unpin for VersionedModuleSchema
impl UnwindSafe for VersionedModuleSchema
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> FmtForward for T
impl<T> FmtForward for T
Source§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.Source§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.Source§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.Source§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.Source§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.Source§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.Source§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.Source§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::RequestSource§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
Source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Source§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
Source§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
Source§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self, then passes self.as_ref() into the pipe function.Source§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self, then passes self.as_mut() into the pipe
function.Source§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> Tap for T
impl<T> Tap for T
Source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read moreSource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read moreSource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read moreSource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read moreSource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.Source§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.Source§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref() only in debug builds, and is erased in release
builds.Source§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.Source§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.