Crates.io | scalc |
lib.rs | scalc |
version | 0.2.1 |
source | src |
created_at | 2019-07-27 11:36:33.408238 |
updated_at | 2019-08-02 05:23:51.024737 |
description | A type that ensures calculation safety and prevents itself from overflow |
homepage | |
repository | https://github.com/XCH-CEB/xch-project |
max_upload_size | |
id | 152037 |
size | 10,663 |
A type that ensures calculation safety and prevents itself from overflow
use scalc::SCell;
fn main() -> Result<(), String> {
let a = SCell::<i32>::new(12) * SCell::<i32>::new(3);
assert_eq!(*a.ok_or("overflow")?.get_data(), 36);
// Addition will result in `None` in the presence of overflow behavior(s)
let a = SCell::<i32>::new(std::i32::MAX) + SCell::<i32>::new(1);
assert!(a.is_none());
Ok(())
}
You can also use New Type Idiom in combination of derive_more
to have better experience.