[automerger skipped] Mark sc-dev-plus-aosp-without-vendor@7634622 as merged am: 98df60d38e -s ours am: 6dc057f857 -s ours

am skip reason: Merged-In I1f4cab92f4bf7f6cf482cb3aa166566a13ec6b1f with SHA-1 71a8d4fcc9 is already in history

Original change: https://googleplex-android-review.googlesource.com/c/platform/external/rust/crates/cast/+/15570656

Change-Id: Ibed33c68609007529168edda9dcac651bcd0e776
tree: f3beeb2524523fde5f9f105e35d9a499df91b27a
  1. .github/
  2. src/
  3. .cargo_vcs_info.json
  4. .gitignore
  5. Android.bp
  6. build.rs
  7. Cargo.toml
  8. Cargo.toml.orig
  9. CHANGELOG.md
  10. LICENSE-APACHE
  11. LICENSE-MIT
  12. METADATA
  13. MODULE_LICENSE_APACHE2
  14. OWNERS
  15. README.md
README.md

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.