| Crates.io | scalc |
| lib.rs | scalc |
| version | 0.2.1 |
| created_at | 2019-07-27 11:36:33.408238+00 |
| updated_at | 2019-08-02 05:23:51.024737+00 |
| 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.