8 unstable releases (3 breaking)
|0.4.4||Apr 12, 2021|
|0.4.3||Apr 12, 2021|
|0.3.0||Mar 30, 2021|
|0.2.0||Mar 20, 2021|
|0.1.0||Mar 18, 2021|
#4 in #cast
3,671 downloads per month
Used in 13 crates (6 directly)
Type conversion, success expected
This library is written to make numeric type conversions easy. Such conversions usually fall into one of the following cases:
- the conversion must preserve values exactly (use
- the conversion is expected to preserve values exactly, though this is
not ensured by the types in question (use
- the conversion could fail and must be checked at run-time (use
- the conversion is from floating point values to integers and should
round to the "nearest" integer (use
- the conversion is from
f64or vice-versa; in this case use of
as f64is likely acceptable since
f32has special representations for non-finite values and conversion to
- truncating conversion (modular arithmetic) is desired; in this case
asprobably does exactly what you want
- saturating conversion is desired (less common; not supported here)
If you are wondering "why not just use
as", there are a few reasons:
- integer conversions may silently truncate
- integer conversions to/from signed types silently reinterpret
- prior to Rust 1.45.0 float-to-int conversions were not fully defined; since this version they use saturating conversion (NaN converts to 0)
- you want some assurance (at least in debug builds) that the conversion will preserve values correctly without having to proof-read code
When should you not use this library?
- Only numeric conversions are supported
- Conversions from floats do not provide fine control of rounding modes
- This library has not been thoroughly tested correctness
All type conversions which are potentially fallible assert on failure in debug builds. In release builds assertions may be omitted, thus making incorrect conversions possible.
always_assert feature flag is set, assertions will be turned on in
all builds. Some additional feature flags are available for finer-grained
control (see Cargo.toml).
The Minumum Supported Rust Version is 1.32.0 (first release of Edition 2018).
std support is required. With default features disabled
is supported, but the
CastFloat traits are unavailable.
libm feature will re-enable these traits.
The COPYRIGHT file includes a list of contributors who claim copyright on this project. This list may be incomplete; new contributors may optionally add themselves to this list.
The easy-cast library is published under the terms of the Apache License, Version 2.0. You may obtain a copy of this licence from the LICENSE file or on the following webpage: https://www.apache.org/licenses/LICENSE-2.0