solana_svm/
transaction_commit_result.rs1use {
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}
20
21pub trait TransactionCommitResultExtensions {
22 fn was_committed(&self) -> bool;
23 fn was_executed_successfully(&self) -> bool;
24}
25
26impl TransactionCommitResultExtensions for TransactionCommitResult {
27 fn was_committed(&self) -> bool {
28 self.is_ok()
29 }
30
31 fn was_executed_successfully(&self) -> bool {
32 match self {
33 Ok(committed_tx) => committed_tx.status.is_ok(),
34 Err(_) => false,
35 }
36 }
37}