solana_svm/
transaction_commit_result.rs

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