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