Struct Contract

Source
pub struct Contract {
    pub name: String,
    pub init_params: FieldList,
    pub fields: FieldList,
    pub transitions: TransitionList,
}
Expand description

The Contract struct represents a parsed contract in Rust, including its name, initialization parameters, fields, and transitions.

Fields§

§name: String

Name of the parsed contract

§init_params: FieldList

List of parameters needed to deploy the contract.

§fields: FieldList

List of the contract’s fields.

§transitions: TransitionList

List of the contract’s transitions.

Implementations§

Source§

impl Contract

Source

pub fn parse(contract_path: &Path) -> Result<Self, Error>

Parse a contract from a given path.

§Examples
use std::{error::Error, path::PathBuf};
use scilla_parser::{Contract, Field, FieldList, Transition, TransitionList, Type};
let contract_path = PathBuf::from("tests/contracts/chainid.scilla");
let contract = Contract::parse(&contract_path).unwrap();

assert_eq!(
    contract,
    Contract {
        name: "ChainId".to_string(),
        fields: FieldList(vec![Field::new("dummy_field", Type::Uint256)]),
        init_params: FieldList::default(),
        transitions: TransitionList(vec![Transition::new(
            "EventChainID",
            FieldList::default()
        )])
    }
);

Trait Implementations§

Source§

impl Debug for Contract

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for Contract

Source§

fn default() -> Contract

Returns the “default value” for a type. Read more
Source§

impl FromStr for Contract

Source§

fn from_str(contract: &str) -> Result<Self, Self::Err>

Parse a Contract from a string slice

§Example
use std::{error::Error, path::PathBuf};
use scilla_parser::{Contract, Field, FieldList, Transition, TransitionList, Type};
let contract_path = PathBuf::from("tests/contracts/chainid.scilla");
let contract_str = include_str!("../tests/contracts/chainid.scilla");
let contract = contract_str.parse::<Contract>().unwrap();

assert_eq!(
    contract,
    Contract {
        name: "ChainId".to_string(),
        fields: FieldList(vec![Field::new("dummy_field", Type::Uint256)]),
        init_params: FieldList::default(),
        transitions: TransitionList(vec![Transition::new(
            "EventChainID",
            FieldList::default()
        )])
    }
);
Source§

type Err = Error

The associated error which can be returned from parsing.
Source§

impl PartialEq for Contract

Source§

fn eq(&self, other: &Contract) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl StructuralPartialEq for Contract

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.