pub struct Number { /* private fields */ }
Expand description
Represents an S-expression number, whether integer or floating point.
Implementations§
source§impl Number
impl Number
sourcepub fn is_i64(&self) -> bool
pub fn is_i64(&self) -> bool
Returns true if the Number
is an integer between i64::MIN
and
i64::MAX
.
For any Number
on which is_i64
returns true, as_i64
is
guaranteed to return the integer value.
let big = i64::max_value() as u64 + 10;
let v = sexp!(((a . 64) (b . ,big) (c . 256.0)));
assert!(v["a"].is_i64());
// Greater than i64::MAX.
assert!(!v["b"].is_i64());
// Numbers with a decimal point are not considered integers.
assert!(!v["c"].is_i64());
sourcepub fn is_u64(&self) -> bool
pub fn is_u64(&self) -> bool
Returns true if the Number
is an integer between zero and u64::MAX
.
For any Number on which is_u64
returns true, as_u64
is guaranteed to
return the integer value.
let v = sexp!(((a . 64) (b . -64) (c . 256.0)));
assert!(v["a"].is_u64());
// Negative integer.
assert!(!v["b"].is_u64());
// Numbers with a decimal point are not considered integers.
assert!(!v["c"].is_u64());
sourcepub fn is_f64(&self) -> bool
pub fn is_f64(&self) -> bool
Returns true if the Number
can be represented by f64.
For any Number on which is_f64
returns true, as_f64
is guaranteed to
return the floating point value.
Currently this function returns true if and only if both is_i64
and
is_u64
return false but this is not a guarantee in the future.
let v = sexp!(((a . 256.0) (b . 64) (c . -64)));
assert!(v["a"].is_f64());
// Integers.
assert!(!v["b"].is_f64());
assert!(!v["c"].is_f64());
sourcepub fn as_i64(&self) -> Option<i64>
pub fn as_i64(&self) -> Option<i64>
If the Number
is an integer, represent it as i64 if possible. Returns
None otherwise.
let big = i64::max_value() as u64 + 10;
let v = sexp!(((a . 64) (b . ,big) (c . 256.0)));
assert_eq!(v["a"].as_i64(), Some(64));
assert_eq!(v["b"].as_i64(), None);
assert_eq!(v["c"].as_i64(), None);
sourcepub fn as_u64(&self) -> Option<u64>
pub fn as_u64(&self) -> Option<u64>
If the Number
is an integer, represent it as u64 if possible. Returns
None otherwise.
let v = sexp!(((a . 64) (b . -64) (c . 256.0)));
assert_eq!(v["a"].as_u64(), Some(64));
assert_eq!(v["b"].as_u64(), None);
assert_eq!(v["c"].as_u64(), None);
sourcepub fn as_f64(&self) -> Option<f64>
pub fn as_f64(&self) -> Option<f64>
Represents the number as f64 if possible. Returns None otherwise.
let v = sexp!(((a . 256.0) (b . 64) (c . -64)));
assert_eq!(v["a"].as_f64(), Some(256.0));
assert_eq!(v["b"].as_f64(), Some(64.0));
assert_eq!(v["c"].as_f64(), Some(-64.0));