ethabi_next/
constructor.rs1use crate::{encode, Bytes, Error, Param, ParamType, Result, Token};
11use serde::Deserialize;
12
13#[derive(Debug, Clone, PartialEq, Deserialize)]
15pub struct Constructor {
16 pub inputs: Vec<Param>,
18}
19
20impl Constructor {
21 fn param_types(&self) -> Vec<ParamType> {
23 self.inputs.iter().map(|p| p.kind.clone()).collect()
24 }
25
26 pub fn encode_input(&self, code: Bytes, tokens: &[Token]) -> Result<Bytes> {
28 let params = self.param_types();
29
30 if Token::types_check(tokens, ¶ms) {
31 Ok(code.into_iter().chain(encode(tokens)).collect())
32 } else {
33 Err(Error::InvalidData)
34 }
35 }
36}