Bug: 176913139

Clone this repo:
  1. afccc9f Migrate to cargo_embargo. am: e5d8474b88 am: 8207acb7d7 am: ae3dc001b9 by Andrew Walbran · 6 months ago main master
  2. 0209830 Migrate to cargo_embargo. am: e5d8474b88 am: 01919df64d am: dd0b6441d5 by Andrew Walbran · 6 months ago
  3. ae3dc00 Migrate to cargo_embargo. am: e5d8474b88 am: 8207acb7d7 by Andrew Walbran · 6 months ago
  4. dd0b644 Migrate to cargo_embargo. am: e5d8474b88 am: 01919df64d by Andrew Walbran · 6 months ago
  5. 8207acb Migrate to cargo_embargo. am: e5d8474b88 by Andrew Walbran · 6 months ago

crates.io crates.io

cast

Ergonomic, checked cast functions for primitive types

extern crate cast;

// `u8` and `u16` are checked cast functions, use them to cast from any numeric
// primitive to `u8`/`u16` respectively
use cast::{u8, u16, Error};

// Infallible operations, like integer promotion, are equivalent to a normal
// cast with `as`
assert_eq!(u16(0u8), 0u16);

// Everything else will return a `Result` depending on the success of the
// operation
assert_eq!(u8(0u16), Ok(0u8));
assert_eq!(u8(256u16), Err(Error::Overflow));
assert_eq!(u8(-1i8), Err(Error::Underflow));
assert_eq!(u8(1. / 0.), Err(Error::Infinite));
assert_eq!(u8(0. / 0.), Err(Error::NaN));

API docs

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.