Commit Graph

6 Commits

Author SHA1 Message Date
Tobin C. Harding 6244cb75fa
Introduce monadic AmountOpResult
We would like to return an error when doing math ops on amount types.
We cannot however use the stdlib `Result` or `Option` because we want to
implement ops on the result type.

Add an `AmountOpResult` type. Return this type from all math operations
on `Amount` and `SignedAmount`.

Implement `core::iter::Sum` for the new type to allow summing iterators
of amounts - somewhat ugly to use, see tests for example usage.
2025-02-10 10:06:59 +11:00
Fmt Bot 19acae7163 2024-12-22 automated rustfmt nightly 2024-12-22 01:21:54 +00:00
Tobin C. Harding e378cdd8fa
kani: Don't bother checking signed to unsigned conversion
Now that we use MAX_MONEY a signed amount always fits in an unsigned
amount.
2024-12-18 09:36:54 +11:00
Tobin C. Harding 50224eecc2
kani: Don't overflow the tests
Amount add and sub now enforce the MAX_MONEY invariant when doing
addition and subtraction. We need to tell kani to assume we don't
overflow before doing actual tests.

Note also that `ops::Add` calls through to `checked_add` and
`ops::Sub` calls through to `checked_sub` so separate kani tests for
these are unnecessary.
2024-12-18 09:36:33 +11:00
Tobin C. Harding cd5d1aba2f
amount: Format verification file
Done as a separate patch so that the diff of the verification code move
was less noisy.
2024-10-31 12:29:20 +11:00
Tobin C. Harding 01f907b7a6
amount: Move verification code to submodule
Code move only, no other changes.
2024-10-31 12:29:20 +11:00