#cast #numbers #numeric #safely #cases #reduce #value

no-std numeric_cast

safe cast between numbers

3 unstable releases

0.2.1 Oct 28, 2022
0.2.0 Aug 21, 2022
0.1.2 May 15, 2022
0.1.1 May 15, 2022
0.1.0 May 15, 2022

#2319 in Rust patterns

Download history 498/week @ 2024-01-05 921/week @ 2024-01-12 938/week @ 2024-01-19 1034/week @ 2024-01-26 1057/week @ 2024-02-02 858/week @ 2024-02-09 1129/week @ 2024-02-16 852/week @ 2024-02-23 1237/week @ 2024-03-01 1306/week @ 2024-03-08 1377/week @ 2024-03-15 1378/week @ 2024-03-22 1267/week @ 2024-03-29 1357/week @ 2024-04-05 1850/week @ 2024-04-12 1249/week @ 2024-04-19

5,911 downloads per month
Used in 10 crates (4 directly)

MIT license

22KB
679 lines

numeric_cast

Latest Version Documentation License Unsafe Forbidden

Safely cast between numbers.

Documentation: https://docs.rs/numeric_cast


lib.rs:

Safely cast between numbers.

The extension trait NumericCast adds a generic method numeric_cast for all number types. The method allows users to safely cast a number to another type without losing precision.

If the value can not be represented by the target type, the method will panic with a message which tells the value, the source type name and the target type name.

As numeric_cast is marked by track_caller, the panic location will be exactly where you call the method.

This library optimizes for code bloat. In most use cases, numeric cast always succeeds at runtime, so the panic function is split from normal control flow to reduce performance impact.

Examples

use numeric_cast::NumericCast;

let entries: u64 = 1024;

let capacity = entries.numeric_cast::<usize>();
let offset: isize = entries.numeric_cast(); // by inference
use numeric_cast::NumericCast;

let n: i32 = -1;
let len: usize = n.numeric_cast(); // panic here

No runtime deps