MutableTransaction

Struct MutableTransaction 

Source
pub struct MutableTransaction<T: AsRef<Transaction> = Arc<Transaction>> {
    pub tx: T,
    pub entries: Vec<Option<UtxoEntry>>,
    pub calculated_fee: Option<u64>,
    pub calculated_compute_mass: Option<u64>,
}
Expand description

Represents a generic mutable/readonly/pointer transaction type along with partially filled UTXO entry data and optional fee and mass

Fields§

§tx: T

The inner transaction

§entries: Vec<Option<UtxoEntry>>

Partially filled UTXO entry data

§calculated_fee: Option<u64>

Populated fee

§calculated_compute_mass: Option<u64>

Populated compute mass (does not include the storage mass)

Implementations§

Source§

impl<T: AsRef<Transaction>> MutableTransaction<T>

Source

pub fn new(tx: T) -> Self

Source

pub fn id(&self) -> TransactionId

Source

pub fn with_entries(tx: T, entries: Vec<UtxoEntry>) -> Self

Source

pub fn as_verifiable(&self) -> impl VerifiableTransaction + '_

Returns the tx wrapped as a VerifiableTransaction. Note that this function must be called only once all UTXO entries are populated, otherwise it panics.

Source

pub fn is_verifiable(&self) -> bool

Source

pub fn is_fully_populated(&self) -> bool

Source

pub fn missing_outpoints( &self, ) -> impl Iterator<Item = TransactionOutpoint> + '_

Source

pub fn clear_entries(&mut self)

Source

pub fn calculated_feerate(&self) -> Option<f64>

Returns the calculated feerate. The feerate is calculated as the amount of fee this transactions pays per gram of the full contextual (compute & storage) mass. The function returns a value when calculated fee exists and the contextual mass is greater than zero, otherwise None is returned.

Source

pub fn mempool_estimated_bytes(&self) -> usize

A function for estimating the amount of memory bytes used by this transaction (dedicated to mempool usage). We need consistency between estimation calls so only this function should be used for this purpose since estimate_mem_bytes is sensitive to pointer wrappers such as Arc

Source

pub fn has_parent(&self, possible_parent: TransactionId) -> bool

Source

pub fn has_parent_in_set( &self, possible_parents: &HashSet<TransactionId>, ) -> bool

Source§

impl MutableTransaction

Specialized impl for T=Arc<Transaction>

Source

pub fn from_tx(tx: Transaction) -> Self

Trait Implementations§

Source§

impl<T: AsRef<Transaction>> AsRef<Transaction> for MutableTransaction<T>

Source§

fn as_ref(&self) -> &Transaction

Converts this type into a shared reference of the (usually inferred) input type.
Source§

impl<T: Clone + AsRef<Transaction>> Clone for MutableTransaction<T>

Source§

fn clone(&self) -> MutableTransaction<T>

Returns a duplicate of the value. Read more
1.0.0§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<T: Debug + AsRef<Transaction>> Debug for MutableTransaction<T>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<T: AsRef<Transaction>> MemSizeEstimator for MutableTransaction<T>

Source§

fn estimate_mem_bytes(&self) -> usize

Estimates the (deep) size of this object in bytes (including heap owned inner data)
Source§

fn estimate_size(&self, mem_mode: MemMode) -> usize

Estimates the size of this object depending on the passed mem mode
Source§

fn estimate_mem_units(&self) -> usize

Estimates the number of units this object holds in memory where the unit byte size is usually a constant known to the caller as well (and hence we avoid computing it over and over)
Source§

impl<T: PartialEq + AsRef<Transaction>> PartialEq for MutableTransaction<T>

Source§

fn eq(&self, other: &MutableTransaction<T>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<T: Eq + AsRef<Transaction>> Eq for MutableTransaction<T>

Source§

impl<T: AsRef<Transaction>> StructuralPartialEq for MutableTransaction<T>

Auto Trait Implementations§

§

impl<T> Freeze for MutableTransaction<T>
where T: Freeze,

§

impl<T> RefUnwindSafe for MutableTransaction<T>
where T: RefUnwindSafe,

§

impl<T> Send for MutableTransaction<T>
where T: Send,

§

impl<T> Sync for MutableTransaction<T>
where T: Sync,

§

impl<T> Unpin for MutableTransaction<T>
where T: Unpin,

§

impl<T> UnwindSafe for MutableTransaction<T>
where T: UnwindSafe,

Blanket Implementations§

§

impl<T> Any for T
where T: 'static + ?Sized,

§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Any for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Source§

fn type_name(&self) -> &'static str

Source§

impl<T> AnySync for T
where T: Any + Send + Sync,

Source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Sync + Send>

§

impl<T> Borrow<T> for T
where T: ?Sized,

§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
§

impl<T> BorrowMut<T> for T
where T: ?Sized,

§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> CloneToUninit for T
where T: Clone,

§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<T, U> ExactFrom<T> for U
where U: TryFrom<T>,

Source§

fn exact_from(value: T) -> U

Source§

impl<T, U> ExactInto<U> for T
where U: ExactFrom<T>,

Source§

fn exact_into(self) -> U

§

impl<T> From<T> for T

§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T, U> Into<U> for T
where U: From<T>,

§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T, U> OverflowingInto<U> for T
where U: OverflowingFrom<T>,

Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T, U> RoundingInto<U> for T
where U: RoundingFrom<T>,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> SaturatingInto<U> for T
where U: SaturatingFrom<T>,

Source§

impl<T> ToDebugString for T
where T: Debug,

Source§

fn to_debug_string(&self) -> String

Returns the String produced by Ts Debug implementation.

§Examples
use malachite_base::strings::ToDebugString;

assert_eq!([1, 2, 3].to_debug_string(), "[1, 2, 3]");
assert_eq!(
    [vec![2, 3], vec![], vec![4]].to_debug_string(),
    "[[2, 3], [], [4]]"
);
assert_eq!(Some(5).to_debug_string(), "Some(5)");
§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T, U> WrappingInto<U> for T
where U: WrappingFrom<T>,

Source§

fn wrapping_into(self) -> U