pub struct Integer(/* private fields */);
Expand description
Implementations§
source§impl Integer
impl Integer
sourcepub fn from_value(val: Value) -> Option<Self>
pub fn from_value(val: Value) -> Option<Self>
Return Some(Integer)
if val
is an Integer
, None
otherwise.
§Examples
use magnus::{eval, Integer};
assert!(Integer::from_value(eval("0").unwrap()).is_some());
assert!(Integer::from_value(eval("9223372036854775807").unwrap()).is_some());
// not an int
assert!(Integer::from_value(eval("1.23").unwrap()).is_none());
sourcepub fn from_i64(n: i64) -> Self
pub fn from_i64(n: i64) -> Self
Create a new Integer
from an i64.
§Panics
Panics if called from a non-Ruby thread. See Ruby::integer_from_i64
for the non-panicking version.
§Examples
use magnus::{rb_assert, Integer};
rb_assert!("i == 0", i = Integer::from_i64(0));
rb_assert!(
"i == 4611686018427387904",
i = Integer::from_i64(4611686018427387904),
);
rb_assert!(
"i == -4611686018427387905",
i = Integer::from_i64(-4611686018427387905),
);
sourcepub fn from_u64(n: u64) -> Self
pub fn from_u64(n: u64) -> Self
Create a new Integer
from a u64.
§Panics
Panics if called from a non-Ruby thread. See Ruby::integer_from_u64
for the non-panicking version.
§Examples
use magnus::{rb_assert, Integer};
rb_assert!("i == 0", i = Integer::from_u64(0));
rb_assert!(
"i == 4611686018427387904",
i = Integer::from_u64(4611686018427387904),
);
sourcepub fn to_i8(self) -> Result<i8, Error>
pub fn to_i8(self) -> Result<i8, Error>
Convert self
to an i8
. Returns Err
if self
is out of range for
i8
.
§Examples
use magnus::{eval, Integer};
assert_eq!(eval::<Integer>("127").unwrap().to_i8().unwrap(), 127);
assert!(eval::<Integer>("128").unwrap().to_i8().is_err());
assert_eq!(eval::<Integer>("-128").unwrap().to_i8().unwrap(), -128);
assert!(eval::<Integer>("-129").unwrap().to_i8().is_err());
sourcepub fn to_i16(self) -> Result<i16, Error>
pub fn to_i16(self) -> Result<i16, Error>
Convert self
to an i16
. Returns Err
if self
is out of range for
i16
.
§Examples
use magnus::{eval, Integer};
assert_eq!(eval::<Integer>("32767").unwrap().to_i16().unwrap(), 32767);
assert!(eval::<Integer>("32768").unwrap().to_i16().is_err());
assert_eq!(eval::<Integer>("-32768").unwrap().to_i16().unwrap(), -32768);
assert!(eval::<Integer>("-32769").unwrap().to_i16().is_err());
sourcepub fn to_i32(self) -> Result<i32, Error>
pub fn to_i32(self) -> Result<i32, Error>
Convert self
to an i32
. Returns Err
if self
is out of range for
i32
.
§Examples
use magnus::{eval, Integer};
assert_eq!(
eval::<Integer>("2147483647").unwrap().to_i32().unwrap(),
2147483647
);
assert!(eval::<Integer>("2147483648").unwrap().to_i32().is_err());
assert_eq!(
eval::<Integer>("-2147483648").unwrap().to_i32().unwrap(),
-2147483648
);
assert!(eval::<Integer>("-2147483649").unwrap().to_i32().is_err());
sourcepub fn to_i64(self) -> Result<i64, Error>
pub fn to_i64(self) -> Result<i64, Error>
Convert self
to an i64
. Returns Err
if self
is out of range for
i64
.
§Examples
use magnus::{eval, Integer};
assert_eq!(
eval::<Integer>("4611686018427387903")
.unwrap()
.to_i64()
.unwrap(),
4611686018427387903
);
assert_eq!(
eval::<Integer>("-4611686018427387904")
.unwrap()
.to_i64()
.unwrap(),
-4611686018427387904
);
assert!(eval::<Integer>("9223372036854775808")
.unwrap()
.to_i64()
.is_err());
assert!(eval::<Integer>("-9223372036854775809")
.unwrap()
.to_i64()
.is_err());
sourcepub fn to_isize(self) -> Result<isize, Error>
pub fn to_isize(self) -> Result<isize, Error>
Convert self
to an isize
. Returns Err
if self
is out of range
for isize
.
§Examples
use magnus::{eval, Integer};
assert_eq!(
eval::<Integer>("4611686018427387903")
.unwrap()
.to_isize()
.unwrap(),
4611686018427387903
);
assert_eq!(
eval::<Integer>("-4611686018427387904")
.unwrap()
.to_isize()
.unwrap(),
-4611686018427387904
);
sourcepub fn to_u8(self) -> Result<u8, Error>
pub fn to_u8(self) -> Result<u8, Error>
Convert self
to a u8
. Returns Err
if self
is negative or out of
range for u8
.
§Examples
use magnus::{eval, Integer};
assert_eq!(eval::<Integer>("255").unwrap().to_u8().unwrap(), 255);
assert!(eval::<Integer>("256").unwrap().to_u8().is_err());
assert!(eval::<Integer>("-1").unwrap().to_u8().is_err());
sourcepub fn to_u16(self) -> Result<u16, Error>
pub fn to_u16(self) -> Result<u16, Error>
Convert self
to a u16
. Returns Err
if self
is negative or out
of range for u16
.
§Examples
use magnus::{eval, Integer};
assert_eq!(eval::<Integer>("65535").unwrap().to_u16().unwrap(), 65535);
assert!(eval::<Integer>("65536").unwrap().to_u16().is_err());
assert!(eval::<Integer>("-1").unwrap().to_u16().is_err());
sourcepub fn to_u32(self) -> Result<u32, Error>
pub fn to_u32(self) -> Result<u32, Error>
Convert self
to a u32
. Returns Err
if self
is negative or out
of range for u32
.
§Examples
use magnus::{eval, Integer};
assert_eq!(
eval::<Integer>("4294967295").unwrap().to_u32().unwrap(),
4294967295
);
assert!(eval::<Integer>("4294967296").unwrap().to_u32().is_err());
assert!(eval::<Integer>("-1").unwrap().to_u32().is_err());
sourcepub fn to_u64(self) -> Result<u64, Error>
pub fn to_u64(self) -> Result<u64, Error>
Convert self
to a u64
. Returns Err
if self
is negative or out
of range for u64
.
§Examples
use magnus::{eval, Integer};
assert_eq!(
eval::<Integer>("4611686018427387903")
.unwrap()
.to_u64()
.unwrap(),
4611686018427387903
);
assert!(eval::<Integer>("-1").unwrap().to_u64().is_err());
assert!(eval::<Integer>("18446744073709551616")
.unwrap()
.to_u64()
.is_err());
sourcepub fn to_usize(self) -> Result<usize, Error>
pub fn to_usize(self) -> Result<usize, Error>
Convert self
to a usize
. Returns Err
if self
is negative or out
of range for usize
.
§Examples
use magnus::{eval, Integer};
assert_eq!(
eval::<Integer>("4611686018427387903")
.unwrap()
.to_usize()
.unwrap(),
4611686018427387903
);
assert!(eval::<Integer>("-1").unwrap().to_usize().is_err());
Trait Implementations§
source§impl Numeric for Integer
impl Numeric for Integer
source§fn coerce_bin<T, ID, U>(self, other: T, op: ID) -> Result<U, Error>
fn coerce_bin<T, ID, U>(self, other: T, op: ID) -> Result<U, Error>
op
with coercion. Read moresource§fn coerce_cmp<T, ID, U>(self, other: T, op: ID) -> Result<U, Error>
fn coerce_cmp<T, ID, U>(self, other: T, op: ID) -> Result<U, Error>
op
with coercion. Read moresource§fn coerce_relop<T, ID, U>(self, other: T, op: ID) -> Result<U, Error>
fn coerce_relop<T, ID, U>(self, other: T, op: ID) -> Result<U, Error>
op
with coercion. Read moresource§impl ReprValue for Integer
impl ReprValue for Integer
source§fn equal<T>(self, other: T) -> Result<bool, Error>where
T: ReprValue,
fn equal<T>(self, other: T) -> Result<bool, Error>where
T: ReprValue,
#==
. Read moresource§fn eql<T>(self, other: T) -> Result<bool, Error>where
T: ReprValue,
fn eql<T>(self, other: T) -> Result<bool, Error>where
T: ReprValue,
#eql?
. Read moresource§fn hash(self) -> Result<Integer, Error>
fn hash(self) -> Result<Integer, Error>
self
. Read moresource§fn to_bool(self) -> bool
fn to_bool(self) -> bool
self
to a bool
, following Ruby’s rules of false
and nil
as boolean false
and everything else boolean true
. Read moresource§fn funcall_public<M, A, T>(self, method: M, args: A) -> Result<T, Error>
fn funcall_public<M, A, T>(self, method: M, args: A) -> Result<T, Error>
source§fn block_call<M, A, R, T>(
self,
method: M,
args: A,
block: fn(_: &[Value], _: Option<Proc>) -> R
) -> Result<T, Error>
fn block_call<M, A, R, T>( self, method: M, args: A, block: fn(_: &[Value], _: Option<Proc>) -> R ) -> Result<T, Error>
source§fn respond_to<M>(self, method: M, include_private: bool) -> Result<bool, Error>where
M: IntoId,
fn respond_to<M>(self, method: M, include_private: bool) -> Result<bool, Error>where
M: IntoId,
self
responds to the given Ruby method. Read more