[−][src]Struct lexpr::number::Number
Represents an S-expression number, whether integer or floating point.
Methods
impl Number
[src]
pub fn is_i64(&self) -> bool
[src]
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());
pub fn is_u64(&self) -> bool
[src]
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());
pub fn is_f64(&self) -> bool
[src]
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());
pub fn as_i64(&self) -> Option<i64>
[src]
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);
pub fn as_u64(&self) -> Option<u64>
[src]
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);
pub fn as_f64(&self) -> Option<f64>
[src]
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));
pub fn from_f64(f: f64) -> Option<Number>
[src]
Converts a finite f64
to a Number
. Infinite or NaN values
are not S-expression numbers.
assert!(Number::from_f64(256.0).is_some()); assert!(Number::from_f64(f64::NAN).is_none());
pub fn visit<V>(&self, visitor: V) -> Result<V::Value, V::Error> where
V: Visitor,
[src]
V: Visitor,
Dispatch based on the type of the contained value.
Depending on the stored value, one of the functions of the supplied visitor will be called.
Trait Implementations
impl Clone for Number
[src]
impl Debug for Number
[src]
impl Display for Number
[src]
impl From<Number> for Value
[src]
impl From<f32> for Number
[src]
impl From<f64> for Number
[src]
impl From<i16> for Number
[src]
impl From<i32> for Number
[src]
impl From<i64> for Number
[src]
impl From<i8> for Number
[src]
impl From<u16> for Number
[src]
impl From<u32> for Number
[src]
impl From<u64> for Number
[src]
impl From<u8> for Number
[src]
impl PartialEq<Number> for Number
[src]
impl StructuralPartialEq for Number
[src]
Auto Trait Implementations
impl RefUnwindSafe for Number
impl Send for Number
impl Sync for Number
impl Unpin for Number
impl UnwindSafe for Number
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
fn to_owned(&self) -> T
[src]
fn clone_into(&self, target: &mut T)
[src]
impl<T> ToString for T where
T: Display + ?Sized,
[src]
T: Display + ?Sized,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,