--- a/crates/evm-coder/src/abi.rs +++ b/crates/evm-coder/src/abi.rs @@ -79,6 +79,9 @@ } Ok(subresult.buf[subresult.offset..subresult.offset + length].into()) } + pub fn string(&mut self) -> Result { + string::from_utf8(self.bytes()?).map_err(|_| Error::Error(ExitError::InvalidRange)) + } pub fn uint32(&mut self) -> Result { Ok(u32::from_be_bytes(self.read_padleft()?)) @@ -226,6 +229,7 @@ impl_abi_readable!(H160, address); impl_abi_readable!(Vec, bytes); impl_abi_readable!(bool, bool); +impl_abi_readable!(string, string); pub trait AbiWrite { fn abi_write(&self, writer: &mut AbiWriter);