solana_svm/
transaction_commit_result.rs

1use {
2    crate::transaction_execution_result::TransactionLoadedAccountsStats,
3    solana_sdk::{
4        fee::FeeDetails, inner_instruction::InnerInstructionsList, rent_debits::RentDebits,
5        transaction::Result as TransactionResult, transaction_context::TransactionReturnData,
6    },
7};
8
9pub type TransactionCommitResult = TransactionResult<CommittedTransaction>;
10
11#[derive(Clone, Debug)]
12#[cfg_attr(feature = "dev-context-only-utils", derive(PartialEq))]
13pub struct CommittedTransaction {
14    pub status: TransactionResult<()>,
15    pub log_messages: Option<Vec<String>>,
16    pub inner_instructions: Option<InnerInstructionsList>,
17    pub return_data: Option<TransactionReturnData>,
18    pub executed_units: u64,
19    pub fee_details: FeeDetails,
20    pub rent_debits: RentDebits,
21    pub loaded_account_stats: TransactionLoadedAccountsStats,
22}
23
24pub trait TransactionCommitResultExtensions {
25    fn was_committed(&self) -> bool;
26    fn was_executed_successfully(&self) -> bool;
27}
28
29impl TransactionCommitResultExtensions for TransactionCommitResult {
30    fn was_committed(&self) -> bool {
31        self.is_ok()
32    }
33
34    fn was_executed_successfully(&self) -> bool {
35        match self {
36            Ok(committed_tx) => committed_tx.status.is_ok(),
37            Err(_) => false,
38        }
39    }
40}