Struct fuels_core::json_abi::ABIParser
source · [−]pub struct ABIParser { /* private fields */ }Implementations
Higher-level layer of the ABI encoding module.
Encode is essentially a wrapper of crate::abi_encoder,
but it is responsible for parsing strings into proper Token
that can be encoded by the crate::abi_encoder.
Note that encode only encodes the parameters for an ABI call,
It won’t include the function selector in it. To get the function
selector, use encode_with_function_selector.
Examples
use fuels_core::json_abi::ABIParser;
let json_abi = r#"
[
{
"type":"contract",
"inputs":[
{
"name":"arg",
"type":"u32"
}
],
"name":"takes_u32_returns_bool",
"outputs":[
{
"name":"",
"type":"bool"
}
]
}
]
"#;
let values: Vec<String> = vec!["10".to_string()];
let mut abi = ABIParser::new();
let function_name = "takes_u32_returns_bool";
let encoded = abi.encode(json_abi, function_name, &values).unwrap();
let expected_encode = "000000000000000a";
assert_eq!(encoded, expected_encode);Similar to encode, but includes the function selector in the
final encoded string.
Examples
use fuels_core::json_abi::ABIParser;
let json_abi = r#"
[
{
"type":"contract",
"inputs":[
{
"name":"arg",
"type":"u32"
}
],
"name":"takes_u32_returns_bool",
"outputs":[
{
"name":"",
"type":"bool"
}
]
}
]
"#;
let values: Vec<String> = vec!["10".to_string()];
let mut abi = ABIParser::new();
let function_name = "takes_u32_returns_bool";
let encoded = abi
.encode_with_function_selector(json_abi, function_name, &values)
.unwrap();
let expected_encode = "000000006355e6ee000000000000000a";
assert_eq!(encoded, expected_encode);Helper function to return the encoded function selector. It must already be encoded.
Similar to encode, but it encodes only an array of strings containing
[<type_1>, <param_1>, <type_2>, <param_2>, <type_n>, <param_n>]
Without having to reference to a JSON specification of the ABI.
Helper function to turn a list of tuples(ParamType, &str) into
a vector of Tokens ready to be encoded.
Essentially a wrapper on tokenize.
Takes a ParamType and a value string and joins them as a single Token that holds the value within it. This Token is used in the encoding process.
Creates a struct Token from an array of parameter types and a string of values.
I.e. it takes a string containing values “value_1, value_2, value_3” and an array
of ParamType containing the type of each value, in order:
[ParamType::Token::Struct() containing the inner types.
It works for nested/recursive structs.
Creates an enum Token from an array of parameter types and a string of values.
I.e. it takes a string containing values “value_1, value_2, value_3” and an array
of ParamType containing the type of each value, in order:
[ParamType::Token::Enum() containing the inner types.
It works for nested/recursive enums.
Higher-level layer of the ABI decoding module.
Decodes a value of a given ABI and a target function’s output.
Note that the value has to be a byte array, meaning that
the caller must properly cast the “upper” type into a &[u8],
Similar to decode, but it decodes only an array types and the encoded data without having to reference to a JSON specification of the ABI.