Derive Copy for NumOpResult
The `NumOpResult` type is way more ergonomic to use if it derives `Copy`. This restricts the `NumOpResult` to being `Copy` as well. This does restrict what we can include in the error type in the future. Derive Copy for `NumOpResult` and `NumOpResult`.
This commit is contained in:
parent
e80ce4a89c
commit
c90559de8e
|
@ -12,7 +12,7 @@ use super::{Amount, SignedAmount};
|
||||||
/// Result of an operation on [`Amount`] or [`SignedAmount`].
|
/// Result of an operation on [`Amount`] or [`SignedAmount`].
|
||||||
///
|
///
|
||||||
/// The type parameter `T` should be normally `Amout` or `SignedAmount`.
|
/// The type parameter `T` should be normally `Amout` or `SignedAmount`.
|
||||||
#[derive(Debug, Clone, PartialEq, Eq)]
|
#[derive(Debug, Copy, Clone, PartialEq, Eq)]
|
||||||
#[must_use]
|
#[must_use]
|
||||||
pub enum NumOpResult<T> {
|
pub enum NumOpResult<T> {
|
||||||
/// Result of a successful mathematical operation.
|
/// Result of a successful mathematical operation.
|
||||||
|
@ -584,7 +584,7 @@ impl OptionExt<SignedAmount> for Option<SignedAmount> {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// An error occurred while doing a mathematical operation.
|
/// An error occurred while doing a mathematical operation.
|
||||||
#[derive(Debug, Clone, PartialEq, Eq)]
|
#[derive(Debug, Copy, Clone, PartialEq, Eq)]
|
||||||
#[non_exhaustive]
|
#[non_exhaustive]
|
||||||
pub struct NumOpError;
|
pub struct NumOpError;
|
||||||
|
|
||||||
|
|
|
@ -1329,44 +1329,44 @@ fn amount_op_result_all_ops() {
|
||||||
// let sres: NumOpResult<SignedAmount> = ssat + ssat;
|
// let sres: NumOpResult<SignedAmount> = ssat + ssat;
|
||||||
|
|
||||||
// Operations that where RHS is the result of another operation.
|
// Operations that where RHS is the result of another operation.
|
||||||
let _ = sat + res.clone();
|
let _ = sat + res;
|
||||||
let _ = &sat + res.clone();
|
let _ = &sat + res;
|
||||||
// let _ = sat + &res.clone();
|
// let _ = sat + &res;
|
||||||
// let _ = &sat + &res.clone();
|
// let _ = &sat + &res;
|
||||||
|
|
||||||
let _ = sat - res.clone();
|
let _ = sat - res;
|
||||||
let _ = &sat - res.clone();
|
let _ = &sat - res;
|
||||||
// let _ = sat - &res.clone();
|
// let _ = sat - &res;
|
||||||
// let _ = &sat - &res.clone();
|
// let _ = &sat - &res;
|
||||||
|
|
||||||
// Operations that where LHS is the result of another operation.
|
// Operations that where LHS is the result of another operation.
|
||||||
let _ = res.clone() + sat;
|
let _ = res + sat;
|
||||||
// let _ = &res.clone() + sat;
|
// let _ = &res + sat;
|
||||||
let _ = res.clone() + &sat;
|
let _ = res + &sat;
|
||||||
// let _ = &res.clone() + &sat;
|
// let _ = &res + &sat;
|
||||||
|
|
||||||
let _ = res.clone() - sat;
|
let _ = res - sat;
|
||||||
// let _ = &res.clone() - sat;
|
// let _ = &res - sat;
|
||||||
let _ = res.clone() - &sat;
|
let _ = res - &sat;
|
||||||
// let _ = &res.clone() - &sat;
|
// let _ = &res - &sat;
|
||||||
|
|
||||||
// Operations that where both sides are the result of another operation.
|
// Operations that where both sides are the result of another operation.
|
||||||
let _ = res.clone() + res.clone();
|
let _ = res + res;
|
||||||
// let _ = &res.clone() + res.clone();
|
// let _ = &res + res;
|
||||||
// let _ = res.clone() + &res.clone();
|
// let _ = res + &res;
|
||||||
// let _ = &res.clone() + &res.clone();
|
// let _ = &res + &res;
|
||||||
|
|
||||||
let _ = res.clone() - res.clone();
|
let _ = res - res;
|
||||||
// let _ = &res.clone() - res.clone();
|
// let _ = &res - res;
|
||||||
// let _ = res.clone() - &res.clone();
|
// let _ = res - &res;
|
||||||
// let _ = &res.clone() - &res.clone();
|
// let _ = &res - &res;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Verify we have implemented all `Sum` for the `NumOpResult` type.
|
// Verify we have implemented all `Sum` for the `NumOpResult` type.
|
||||||
#[test]
|
#[test]
|
||||||
fn amount_op_result_sum() {
|
fn amount_op_result_sum() {
|
||||||
let res = Amount::from_sat(1) + Amount::from_sat(1);
|
let res = Amount::from_sat(1) + Amount::from_sat(1);
|
||||||
let amounts = [res.clone(), res.clone()];
|
let amounts = [res, res];
|
||||||
let amount_refs = [&res, &res];
|
let amount_refs = [&res, &res];
|
||||||
|
|
||||||
// Sum iterators.
|
// Sum iterators.
|
||||||
|
|
Loading…
Reference in New Issue