bitcoin_units

Struct FeeRate

source
pub struct FeeRate(/* private fields */);
Available on crate feature alloc only.
Expand description

Represents fee rate.

This is an integer newtype representing fee rate in sat/kwu. It provides protection against mixing up the types as well as basic formatting features.

Implementations§

source§

impl FeeRate

source

pub const ZERO: FeeRate = _

0 sat/kwu.

Equivalent to MIN, may better express intent in some contexts.

source

pub const MIN: FeeRate = FeeRate::ZERO

Minimum possible value (0 sat/kwu).

Equivalent to ZERO, may better express intent in some contexts.

source

pub const MAX: FeeRate = _

Maximum possible value.

source

pub const BROADCAST_MIN: FeeRate = _

Minimum fee rate required to broadcast a transaction.

The value matches the default Bitcoin Core policy at the time of library release.

source

pub const DUST: FeeRate = _

Fee rate used to compute dust amount.

source

pub const fn from_sat_per_kwu(sat_kwu: u64) -> Self

Constructs FeeRate from satoshis per 1000 weight units.

source

pub fn from_sat_per_vb(sat_vb: u64) -> Option<Self>

Constructs FeeRate from satoshis per virtual bytes.

§Errors

Returns None on arithmetic overflow.

source

pub const fn from_sat_per_vb_unchecked(sat_vb: u64) -> Self

Constructs FeeRate from satoshis per virtual bytes without overflow check.

source

pub const fn to_sat_per_kwu(self) -> u64

Returns raw fee rate.

Can be used instead of into() to avoid inference issues.

source

pub const fn to_sat_per_vb_floor(self) -> u64

Converts to sat/vB rounding down.

source

pub const fn to_sat_per_vb_ceil(self) -> u64

Converts to sat/vB rounding up.

source

pub fn checked_mul(self, rhs: u64) -> Option<Self>

Checked multiplication.

Computes self * rhs returning None if overflow occurred.

source

pub fn checked_div(self, rhs: u64) -> Option<Self>

Checked division.

Computes self / rhs returning None if rhs == 0.

source

pub fn checked_mul_by_weight(self, rhs: Weight) -> Option<Amount>

Checked weight multiplication.

Computes the absolute fee amount for a given Weight at this fee rate. When the resulting fee is a non-integer amount, the amount is rounded up, ensuring that the transaction fee is enough instead of falling short if rounded down.

None is returned if an overflow occurred.

source

pub fn checked_add(self, rhs: u64) -> Option<Self>

Checked addition.

Computes self + rhs returning None if overflow occured.

source

pub fn checked_sub(self, rhs: u64) -> Option<Self>

Checked subtraction.

Computes self - rhs returning None if overflow occured.

source

pub fn fee_wu(self, weight: Weight) -> Option<Amount>

Calculates the fee by multiplying this fee rate by weight, in weight units, returning None if an overflow occurred.

This is equivalent to Self::checked_mul_by_weight().

source

pub fn fee_vb(self, vb: u64) -> Option<Amount>

Calculates the fee by multiplying this fee rate by weight, in virtual bytes, returning None if an overflow occurred.

This is equivalent to converting vb to Weight using Weight::from_vb and then calling Self::fee_wu(weight).

Trait Implementations§

source§

impl<'a, 'b> Add<&'a FeeRate> for &'b FeeRate

source§

type Output = FeeRate

The resulting type after applying the + operator.
source§

fn add(self, other: &'a FeeRate) -> <FeeRate as Add>::Output

Performs the + operation. Read more
source§

impl Add<&FeeRate> for FeeRate

source§

type Output = FeeRate

The resulting type after applying the + operator.
source§

fn add(self, other: &FeeRate) -> <FeeRate as Add>::Output

Performs the + operation. Read more
source§

impl Add<FeeRate> for &FeeRate

source§

type Output = FeeRate

The resulting type after applying the + operator.
source§

fn add(self, other: FeeRate) -> <FeeRate as Add>::Output

Performs the + operation. Read more
source§

impl Add for FeeRate

source§

type Output = FeeRate

The resulting type after applying the + operator.
source§

fn add(self, rhs: FeeRate) -> Self::Output

Performs the + operation. Read more
source§

impl AddAssign<&FeeRate> for FeeRate

source§

fn add_assign(&mut self, rhs: &FeeRate)

Performs the += operation. Read more
source§

impl AddAssign for FeeRate

source§

fn add_assign(&mut self, rhs: Self)

Performs the += operation. Read more
source§

impl<'a> Arbitrary<'a> for FeeRate

Available on crate feature arbitrary only.
source§

fn arbitrary(u: &mut Unstructured<'a>) -> Result<Self>

Generate an arbitrary value of Self from the given unstructured data. Read more
source§

fn arbitrary_take_rest(u: Unstructured<'a>) -> Result<Self, Error>

Generate an arbitrary value of Self from the entirety of the given unstructured data. Read more
source§

fn size_hint(depth: usize) -> (usize, Option<usize>)

Get a size hint for how many bytes out of an Unstructured this type needs to construct itself. Read more
source§

impl Clone for FeeRate

source§

fn clone(&self) -> FeeRate

Returns a copy of the value. Read more
1.6.0 · source§

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

Performs copy-assignment from source. Read more
source§

impl Debug for FeeRate

source§

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

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

impl<'de> Deserialize<'de> for FeeRate

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Display for FeeRate

Alternative will display the unit.

source§

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

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

impl From<FeeRate> for u64

source§

fn from(value: FeeRate) -> Self

Converts to this type from the input type.
source§

impl FromStr for FeeRate

source§

type Err = ParseIntError

The associated error which can be returned from parsing.
source§

fn from_str(s: &str) -> Result<Self, Self::Err>

Parses a string s to return a value of this type. Read more
source§

impl Hash for FeeRate

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.6.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl Mul<FeeRate> for Weight

Computes the ceiling so that the fee computation is conservative.

source§

type Output = Amount

The resulting type after applying the * operator.
source§

fn mul(self, rhs: FeeRate) -> Self::Output

Performs the * operation. Read more
source§

impl Mul<Weight> for FeeRate

source§

type Output = Amount

The resulting type after applying the * operator.
source§

fn mul(self, rhs: Weight) -> Self::Output

Performs the * operation. Read more
source§

impl Ord for FeeRate

source§

fn cmp(&self, other: &FeeRate) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for FeeRate

source§

fn eq(&self, other: &FeeRate) -> bool

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

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 PartialOrd for FeeRate

source§

fn partial_cmp(&self, other: &FeeRate) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.6.0 · source§

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

Tests less than (for self and other) and is used by the < operator. Read more
1.6.0 · source§

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

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.6.0 · source§

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

Tests greater than (for self and other) and is used by the > operator. Read more
1.6.0 · source§

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

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl Serialize for FeeRate

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl<'a, 'b> Sub<&'a FeeRate> for &'b FeeRate

source§

type Output = FeeRate

The resulting type after applying the - operator.
source§

fn sub(self, other: &'a FeeRate) -> <FeeRate as Add>::Output

Performs the - operation. Read more
source§

impl Sub<&FeeRate> for FeeRate

source§

type Output = FeeRate

The resulting type after applying the - operator.
source§

fn sub(self, other: &FeeRate) -> <FeeRate as Add>::Output

Performs the - operation. Read more
source§

impl Sub<FeeRate> for &FeeRate

source§

type Output = FeeRate

The resulting type after applying the - operator.
source§

fn sub(self, other: FeeRate) -> <FeeRate as Add>::Output

Performs the - operation. Read more
source§

impl Sub for FeeRate

source§

type Output = FeeRate

The resulting type after applying the - operator.
source§

fn sub(self, rhs: FeeRate) -> Self::Output

Performs the - operation. Read more
source§

impl SubAssign<&FeeRate> for FeeRate

source§

fn sub_assign(&mut self, rhs: &FeeRate)

Performs the -= operation. Read more
source§

impl SubAssign for FeeRate

source§

fn sub_assign(&mut self, rhs: Self)

Performs the -= operation. Read more
source§

impl TryFrom<&str> for FeeRate

source§

type Error = ParseIntError

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

fn try_from(s: &str) -> Result<Self, Self::Error>

Performs the conversion.
source§

impl TryFrom<Box<str>> for FeeRate

source§

type Error = ParseIntError

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

fn try_from(s: Box<str>) -> Result<Self, Self::Error>

Performs the conversion.
source§

impl TryFrom<String> for FeeRate

source§

type Error = ParseIntError

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

fn try_from(s: String) -> Result<Self, Self::Error>

Performs the conversion.
source§

impl Copy for FeeRate

source§

impl Eq for FeeRate

source§

impl StructuralPartialEq for FeeRate

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

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

source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

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

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

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

source§

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> ToOwned for T
where T: Clone,

source§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

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

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

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

impl<T> ToString for T
where T: Display + ?Sized,

source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
source§

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

source§

type Error = Infallible

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

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

Performs the conversion.
source§

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

source§

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

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

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

Performs the conversion.
source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,