solana_svm/
transaction_commit_result.rs

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