Skip to content

Commit

Permalink
chore: add util functions for getting output data (#509)
Browse files Browse the repository at this point in the history
  • Loading branch information
mattsse authored Jun 7, 2023
1 parent d1a59df commit b224874
Showing 1 changed file with 30 additions and 0 deletions.
30 changes: 30 additions & 0 deletions crates/primitives/src/result.rs
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,28 @@ impl ExecutionResult {
}
}

/// Returns the output data of the execution.
///
/// Returns `None` if the execution was halted.
pub fn output(&self) -> Option<&Bytes> {
match self {
Self::Success { output, .. } => Some(output.data()),
Self::Revert { output, .. } => Some(output),
_ => None,
}
}

/// Consumes the type and returns the output data of the execution.
///
/// Returns `None` if the execution was halted.
pub fn into_output(self) -> Option<Bytes> {
match self {
Self::Success { output, .. } => Some(output.into_data()),
Self::Revert { output, .. } => Some(output),
_ => None,
}
}

/// Consumes the type and returns logs, if execution is not successful, function will return empty vec.
pub fn into_logs(self) -> Vec<Log> {
match self {
Expand Down Expand Up @@ -87,6 +109,14 @@ impl Output {
Output::Create(data, _) => data,
}
}

/// Returns the output data of the execution output.
pub fn data(&self) -> &Bytes {
match self {
Output::Call(data) => data,
Output::Create(data, _) => data,
}
}
}

#[derive(Debug, Copy, Clone, PartialEq, Eq)]
Expand Down

0 comments on commit b224874

Please sign in to comment.