SCalc

A type that ensures calculation safety and prevents itself from overflow

Get started

``` use scalc::SCell;

fn main() -> Result<(), String> { let a = SCell::::new(12) * SCell::::new(3); asserteq!(*a.okor("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*](https://doc.rust-lang.org/stable/rust-by-example/generics/new_types.html) in combination of [derivemore`](https://github.com/JelteF/derivemore) to have better experience.