soroban-cli 26.0.0

Soroban CLI
Documentation
use crate::xdr::{Transaction, TransactionEnvelope, TransactionV1Envelope, VecM};

#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord)]
pub enum TxnResult<R> {
    Txn(Box<Transaction>),
    Res(R),
}

impl<R> TxnResult<R> {
    pub fn into_result(self) -> Option<R> {
        match self {
            TxnResult::Res(res) => Some(res),
            TxnResult::Txn(_) => None,
        }
    }

    pub fn to_envelope(self) -> TxnEnvelopeResult<R> {
        match self {
            TxnResult::Txn(tx) => TxnEnvelopeResult::TxnEnvelope(Box::new(
                TransactionEnvelope::Tx(TransactionV1Envelope {
                    tx: *tx,
                    signatures: VecM::default(),
                }),
            )),
            TxnResult::Res(res) => TxnEnvelopeResult::Res(res),
        }
    }
}

#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord)]
pub enum TxnEnvelopeResult<R> {
    TxnEnvelope(Box<TransactionEnvelope>),
    Res(R),
}