Struct casper_contract_schema::StructMember
source · pub struct StructMember {
pub name: String,
pub description: Option<String>,
pub ty: Type,
}
Expand description
Struct member definition.
Fields§
§name: String
§description: Option<String>
§ty: Type
Implementations§
source§impl StructMember
impl StructMember
sourcepub fn new(name: &str, description: &str, ty: NamedCLType) -> Self
pub fn new(name: &str, description: &str, ty: NamedCLType) -> Self
Creates a new struct member.
Examples found in repository?
examples/dns.rs (line 32)
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123
fn enum_example_schema() -> ContractSchema {
ContractSchema {
casper_contract_schema_version: 1,
toolchain: String::from("rustc 1.73.0 (cc66ad468 2023-10-03)"),
contract_name: String::from("DNS"),
contract_version: String::from("0.1.3"),
authors: vec![],
repository: None,
homepage: None,
errors: vec![],
types: vec![
CustomType::Struct {
name: TypeName::new("IP::IPv6"),
description: None,
members: vec![StructMember::new("ip", "", NamedCLType::ByteArray(16))],
},
CustomType::Struct {
name: TypeName::new("IP::IPv6WithDescription"),
description: None,
members: vec![
StructMember::new("ip", "", NamedCLType::ByteArray(16)),
StructMember::new("description", "", NamedCLType::String),
],
},
CustomType::Enum {
name: TypeName::new("IP"),
description: Some(String::from("IP address")),
variants: vec![
EnumVariant {
name: String::from("Unknown"),
description: None,
discriminant: 0,
ty: NamedCLType::Unit.into(),
},
EnumVariant {
name: String::from("IPv4"),
description: Some(String::from("IPv4 address")),
discriminant: 1,
ty: NamedCLType::ByteArray(4).into(),
},
EnumVariant {
name: String::from("IPv4WithDescription"),
description: Some(String::from("IPv4 address with description")),
discriminant: 2,
ty: NamedCLType::Tuple2([
Box::new(NamedCLType::ByteArray(4)),
Box::new(NamedCLType::String),
])
.into(),
},
EnumVariant {
name: String::from("IPv6"),
description: Some(String::from("IPv6 address")),
discriminant: 3,
ty: NamedCLType::Custom("IP::IPv6".to_owned()).into(),
},
EnumVariant {
name: String::from("IPv6WithDescription"),
description: Some(String::from("IPv6 address with description")),
discriminant: 4,
ty: NamedCLType::Custom("IP::IPv6WithDescription".to_owned()).into(),
},
],
},
CustomType::Struct {
name: TypeName::new("DNSRecord"),
description: Some(String::from("DNS record")),
members: vec![
StructMember::new("name", "Domain name", NamedCLType::String),
StructMember::new("ip", "", NamedCLType::Custom("IP".to_owned())),
],
},
],
entry_points: vec![
Entrypoint {
name: String::from("add_record"),
description: None,
is_mutable: true,
arguments: vec![
Argument::new("name", "", NamedCLType::String),
Argument::new("ip", "", NamedCLType::Custom("IP".to_owned())),
],
return_ty: NamedCLType::Unit.into(),
is_contract_context: true,
access: Access::Public,
},
Entrypoint {
name: String::from("remove_record"),
description: Some(String::from("Remove a DNS record")),
is_mutable: true,
arguments: vec![
Argument::new("name", "", NamedCLType::String),
Argument::new("ip", "", NamedCLType::Custom("IP".to_owned())),
],
return_ty: NamedCLType::Unit.into(),
is_contract_context: true,
access: Access::Groups(vec![String::from("admin"), String::from("moderator")]),
},
],
events: vec![
Event::new("event_RecordAdded", "DNSRecord"),
Event::new("event_RecordRemoved", "DNSRecord"),
],
call: None,
}
}
More examples
examples/erc20.rs (lines 31-35)
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152
pub fn example_erc20_schema() -> ContractSchema {
ContractSchema {
casper_contract_schema_version: 1,
toolchain: String::from("rustc 1.73.0 (cc66ad468 2023-10-03)"),
contract_name: String::from("Erc20"),
contract_version: String::from("0.1.0"),
authors: vec![String::from("John Doe <john@doe.com>")],
repository: Some(String::from(
"https://github.com/casper-ecosystem/casper-contract-schema",
)),
homepage: Some(String::from("https://john.doe.com")),
errors: vec![
UserError {
name: String::from("InsufficientFunds"),
description: Some(String::from("Insufficient funds")),
discriminant: 100u16,
},
UserError {
name: String::from("InsufficientAllowance"),
description: Some(String::from("Insufficient allowance")),
discriminant: 101u16,
},
],
types: vec![
CustomType::Struct {
name: TypeName::new("Transfer"),
description: Some(String::from("Transfer event")),
members: vec![
StructMember::new(
"from",
"Sender of tokens.",
NamedCLType::Option(Box::new(NamedCLType::Key)),
),
StructMember::new(
"to",
"Recipient of tokens.",
NamedCLType::Option(Box::new(NamedCLType::Key)),
),
StructMember::new("value", "Transfered amount.", NamedCLType::U256),
],
},
CustomType::Struct {
name: TypeName::new("Approval"),
description: Some(String::from("Approval event")),
members: vec![
StructMember::new("owner", "", NamedCLType::Option(Box::new(NamedCLType::Key))),
StructMember::new(
"spender",
"",
NamedCLType::Option(Box::new(NamedCLType::Key)),
),
StructMember::new("value", "", NamedCLType::U256),
],
},
],
entry_points: vec![
Entrypoint {
name: String::from("transfer"),
description: Some(String::from("Transfer tokens to another account")),
is_mutable: true,
arguments: vec![
Argument::new("recipient", "", NamedCLType::Key),
Argument::new("amount", "", NamedCLType::U256),
],
return_ty: NamedCLType::Unit.into(),
is_contract_context: true,
access: Access::Public,
},
Entrypoint {
name: String::from("transfer_from"),
description: Some(String::from("Transfer tokens from one account to another")),
is_mutable: true,
arguments: vec![
Argument::new("owner", "", NamedCLType::Key),
Argument::new("recipient", "", NamedCLType::Key),
Argument::new("amount", "", NamedCLType::U256),
],
return_ty: NamedCLType::Unit.into(),
is_contract_context: true,
access: Access::Public,
},
Entrypoint {
name: String::from("approve"),
description: Some(String::from(
"Approve spender to use tokens on behalf of the owner",
)),
is_mutable: true,
arguments: vec![
Argument::new("spender", "", NamedCLType::Key),
Argument::new("amount", "", NamedCLType::U256),
],
return_ty: NamedCLType::Unit.into(),
is_contract_context: true,
access: Access::Public,
},
Entrypoint {
name: String::from("allowance"),
description: Some(String::from(
"Check the amount of tokens that an owner allowed to a spender",
)),
is_mutable: false,
arguments: vec![
Argument::new("owner", "", NamedCLType::Key),
Argument::new("spender", "", NamedCLType::Key),
],
return_ty: NamedCLType::U256.into(),
is_contract_context: true,
access: Access::Public,
},
Entrypoint {
name: String::from("balance_of"),
description: Some(String::from(
"Check the amount of tokens owned by an account",
)),
is_mutable: false,
arguments: vec![Argument::new("owner", "", NamedCLType::Key)],
return_ty: NamedCLType::U256.into(),
is_contract_context: true,
access: Access::Public,
},
Entrypoint {
name: String::from("total_supply"),
description: Some(String::from("Check the total supply of tokens")),
is_mutable: false,
arguments: vec![],
return_ty: NamedCLType::U256.into(),
is_contract_context: true,
access: Access::Public,
},
],
events: vec![
Event::new("event_Transfer", "Transfer"),
Event::new("event_Approval", "Approval"),
],
call: Some(CallMethod::new(
"erc20.wasm",
"Fungible token",
vec![
Argument::new("name", "Name of the token", NamedCLType::String),
Argument::new("symbol", "Symbol of the token", NamedCLType::String),
Argument::new("decimals", "Number of decimals", NamedCLType::U8),
Argument::new(
"initial_supply",
"Initial supply of tokens",
NamedCLType::U256,
),
],
)),
}
}
Trait Implementations§
source§impl Debug for StructMember
impl Debug for StructMember
source§impl<'de> Deserialize<'de> for StructMember
impl<'de> Deserialize<'de> for StructMember
source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
source§impl JsonSchema for StructMember
impl JsonSchema for StructMember
source§fn schema_name() -> String
fn schema_name() -> String
The name of the generated JSON Schema. Read more
source§fn json_schema(gen: &mut SchemaGenerator) -> Schema
fn json_schema(gen: &mut SchemaGenerator) -> Schema
Generates a JSON Schema for this type. Read more
source§fn is_referenceable() -> bool
fn is_referenceable() -> bool
Whether JSON Schemas generated for this type should be re-used where possible using the
$ref
keyword. Read moresource§impl Ord for StructMember
impl Ord for StructMember
source§fn cmp(&self, other: &StructMember) -> Ordering
fn cmp(&self, other: &StructMember) -> Ordering
1.21.0 · 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
source§impl PartialEq for StructMember
impl PartialEq for StructMember
source§fn eq(&self, other: &StructMember) -> bool
fn eq(&self, other: &StructMember) -> bool
This method tests for
self
and other
values to be equal, and is used
by ==
.source§impl PartialOrd for StructMember
impl PartialOrd for StructMember
source§fn partial_cmp(&self, other: &StructMember) -> Option<Ordering>
fn partial_cmp(&self, other: &StructMember) -> Option<Ordering>
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
This method tests less than or equal to (for
self
and other
) and is used by the <=
operator. Read moresource§impl Serialize for StructMember
impl Serialize for StructMember
impl Eq for StructMember
impl StructuralPartialEq for StructMember
Auto Trait Implementations§
impl Freeze for StructMember
impl RefUnwindSafe for StructMember
impl Send for StructMember
impl Sync for StructMember
impl Unpin for StructMember
impl UnwindSafe for StructMember
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
source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key
and return true
if they are equal.