solana_svm/
transaction_commit_result.rs1use {
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}