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`].
|
||||
///
|
||||
/// The type parameter `T` should be normally `Amout` or `SignedAmount`.
|
||||
#[derive(Debug, Clone, PartialEq, Eq)]
|
||||
#[derive(Debug, Copy, Clone, PartialEq, Eq)]
|
||||
#[must_use]
|
||||
pub enum NumOpResult<T> {
|
||||
/// Result of a successful mathematical operation.
|
||||
|
@ -584,7 +584,7 @@ impl OptionExt<SignedAmount> for Option<SignedAmount> {
|
|||
}
|
||||
|
||||
/// An error occurred while doing a mathematical operation.
|
||||
#[derive(Debug, Clone, PartialEq, Eq)]
|
||||
#[derive(Debug, Copy, Clone, PartialEq, Eq)]
|
||||
#[non_exhaustive]
|
||||
pub struct NumOpError;
|
||||
|
||||
|
|
|
@ -1329,44 +1329,44 @@ fn amount_op_result_all_ops() {
|
|||
// let sres: NumOpResult<SignedAmount> = ssat + ssat;
|
||||
|
||||
// Operations that where RHS is the result of another operation.
|
||||
let _ = sat + res.clone();
|
||||
let _ = &sat + res.clone();
|
||||
// let _ = sat + &res.clone();
|
||||
// let _ = &sat + &res.clone();
|
||||
let _ = sat + res;
|
||||
let _ = &sat + res;
|
||||
// let _ = sat + &res;
|
||||
// let _ = &sat + &res;
|
||||
|
||||
let _ = sat - res.clone();
|
||||
let _ = &sat - res.clone();
|
||||
// let _ = sat - &res.clone();
|
||||
// let _ = &sat - &res.clone();
|
||||
let _ = sat - res;
|
||||
let _ = &sat - res;
|
||||
// let _ = sat - &res;
|
||||
// let _ = &sat - &res;
|
||||
|
||||
// Operations that where LHS is the result of another operation.
|
||||
let _ = res.clone() + sat;
|
||||
// let _ = &res.clone() + sat;
|
||||
let _ = res.clone() + &sat;
|
||||
// let _ = &res.clone() + &sat;
|
||||
let _ = res + sat;
|
||||
// let _ = &res + sat;
|
||||
let _ = res + &sat;
|
||||
// let _ = &res + &sat;
|
||||
|
||||
let _ = res.clone() - sat;
|
||||
// let _ = &res.clone() - sat;
|
||||
let _ = res.clone() - &sat;
|
||||
// let _ = &res.clone() - &sat;
|
||||
let _ = res - sat;
|
||||
// let _ = &res - sat;
|
||||
let _ = res - &sat;
|
||||
// let _ = &res - &sat;
|
||||
|
||||
// Operations that where both sides are the result of another operation.
|
||||
let _ = res.clone() + res.clone();
|
||||
// let _ = &res.clone() + res.clone();
|
||||
// let _ = res.clone() + &res.clone();
|
||||
// let _ = &res.clone() + &res.clone();
|
||||
let _ = res + res;
|
||||
// let _ = &res + res;
|
||||
// let _ = res + &res;
|
||||
// let _ = &res + &res;
|
||||
|
||||
let _ = res.clone() - res.clone();
|
||||
// let _ = &res.clone() - res.clone();
|
||||
// let _ = res.clone() - &res.clone();
|
||||
// let _ = &res.clone() - &res.clone();
|
||||
let _ = res - res;
|
||||
// let _ = &res - res;
|
||||
// let _ = res - &res;
|
||||
// let _ = &res - &res;
|
||||
}
|
||||
|
||||
// Verify we have implemented all `Sum` for the `NumOpResult` type.
|
||||
#[test]
|
||||
fn amount_op_result_sum() {
|
||||
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];
|
||||
|
||||
// Sum iterators.
|
||||
|
|
Loading…
Reference in New Issue