INNER CODE UNIT · Rust
decode_contract_err
risc0/risc0-ethereum · contracts/src/lib.rs:121
fn decode_contract_err<T: SolInterface>(err: alloy::contract::Error) -> Result<T, Error> {
match err {
alloy::contract::Error::TransportError(TransportError::ErrorResp(ts_err)) => {
let Some(data) = ts_err.data else {
return Err(
DecodingError::MissingData(ts_err.code, ts_err.message.to_string()).into(),
);
};
let data = data.get().trim_matches('"');
let Ok(data) = Bytes::from_str(data) else {
return Err(DecodingError::BytesFromStrError.into());
};
let decoded_error = match T::abi_decode(&data) {
Ok(res) => res,
Err(err) => {