Expand description
Crate js_int
provides JavaScript-interoperable integer types.
JavaScript does not have native integers. Instead it represents all numeric values with a
single Number
type which is represented as an IEEE 754
floating-point value.* Rust’s i64
and u64
types
can contain values outside the range of what can be represented in a JavaScript Number
.
This crate provides the types Int
and UInt
which wrap i64
and u64
, respectively. These
types add bounds checking to ensure the contained value is within the range representable by a
JavaScript Number
. They provide useful trait implementations to easily convert from Rust’s
primitive integer types.
* In the upcoming ECMAScript 2020, JavaScript will probably gain support for integers.
There is a proposal for a BigInt
type type that is not far from becoming part of the
JavaScript specification. It won’t make this crate obsolete in any way though, since there will
still be lots of JS code using Number
, and code in other languages that assumes its use.
#![no_std]
The js_int
crate does not use Rust’s standard library, and is compatible with #![no_std]
programs.
Features
serde
: Serialization and deserialization support via serde. Disabled by default. You can usejs_int
+serde
in#![no_std]
contexts if you usedefault-features = false
for both.float_deserialize
: Deserialize viaf64
, not viau64
. If the input has a fraction, deserialization will fail.lax_deserialize
: Likefloat_deserialize
, but if the input has a fraction, it is deserialized with the fractional part discarded. Please be aware thatserde_json
doesn’t losslessly parse large floats with a fractional part by default (even if the fractional part is.0
). To fix that, enable itsfloat_roundtrip
feature.std
: Enablestd::error::Error
implementations forParseIntError
,TryFromIntError
. Enabled by default.
Macros
Structs
An integer limited to the range of integers that can be represented exactly by an f64.
The error type returned when when parsing an integer fails.
The error type returned when a checked integral type conversion fails.
An integer limited to the range of non-negative integers that can be represented exactly by an f64.
Constants
The largest integer value that can be represented exactly by an f64.
The same as MAX_SAFE_INT
, but with u64
as the type.
The smallest integer value that can be represented exactly by an f64.