#[repr(C)]pub struct AnyObject { /* private fields */ }
Expand description
Representation of any Ruby object while its type is unknown
As Ruby is a dynamically typed language, at some points Rutie does not know the exact Ruby type of the object, for example:
-
Retrieving an object from array;
-
Retrieving an object from hash;
-
Receiving arguments to a method;
-
Initializing a new instance of a non-built-in class.
In these cases you should cast AnyObject
to the required type.
Examples
Retrieving an object from Array
use rutie::{Array, Fixnum, Object, VM};
let array = Array::new().push(Fixnum::new(1));
let value = array.at(0).try_convert_to::<Fixnum>(); // `Array::at()` returns `AnyObject`
assert_eq!(value, Ok(Fixnum::new(1)));
Retrieving an object from Hash
use rutie::{Fixnum, Hash, Object, Symbol, VM};
let mut hash = Hash::new();
hash.store(Symbol::new("key"), Fixnum::new(1));
// `Hash::at()` returns `AnyObject`
let value = hash.at(&Symbol::new("key")).try_convert_to::<Fixnum>();
assert_eq!(value, Ok(Fixnum::new(1)));
You can find more examples in Class
, Object
and VerifiedObject
documentation.
Methods from Deref<Target = Value>
pub fn is_true(&self) -> bool
pub fn is_false(&self) -> bool
pub fn is_nil(&self) -> bool
pub fn is_node(&self) -> bool
pub fn is_undef(&self) -> bool
pub fn is_symbol(&self) -> bool
pub fn is_fixnum(&self) -> bool
pub fn is_flonum(&self) -> bool
pub fn is_frozen(&self) -> bool
pub fn ty(&self) -> ValueType
Trait Implementations
sourceimpl FromIterator<AnyObject> for Array
impl FromIterator<AnyObject> for Array
Converts an iterator into Array
.
Examples
use rutie::{Array, Fixnum, Object, VM};
let array: Array = (1..6)
.map(|num| num * 2)
.map(|num| Fixnum::new(num).to_any_object())
.collect();
assert_eq!(array.length(), 5);
for i in 0..5 {
let expected_number = (i + 1) * 2;
assert_eq!(array.at(i).try_convert_to::<Fixnum>().unwrap().to_i64(), expected_number);
}
sourcefn from_iter<I: IntoIterator<Item = AnyObject>>(iter: I) -> Self
fn from_iter<I: IntoIterator<Item = AnyObject>>(iter: I) -> Self
Creates a value from an iterator. Read more
sourceimpl Into<AnyObject> for AnyException
impl Into<AnyObject> for AnyException
sourceimpl Into<AnyObject> for Enumerator
impl Into<AnyObject> for Enumerator
sourceimpl Object for AnyObject
impl Object for AnyObject
sourcefn singleton_class(&self) -> Class
fn singleton_class(&self) -> Class
Returns a singleton class of current object. Read more
sourcefn get_data<'a, T>(&'a self, wrapper: &'a dyn DataTypeWrapper<T>) -> &T
fn get_data<'a, T>(&'a self, wrapper: &'a dyn DataTypeWrapper<T>) -> &T
Gets an immutable reference to the Rust structure which is wrapped into a Ruby object. Read more
sourcefn get_data_mut<'a, T>(
&'a mut self,
wrapper: &'a dyn DataTypeWrapper<T>
) -> &mut T
fn get_data_mut<'a, T>(
&'a mut self,
wrapper: &'a dyn DataTypeWrapper<T>
) -> &mut T
Gets a mutable reference to the Rust structure which is wrapped into a Ruby object.
sourcefn define_method<I: Object, O: Object>(
&mut self,
name: &str,
callback: Callback<I, O>
)
fn define_method<I: Object, O: Object>(
&mut self,
name: &str,
callback: Callback<I, O>
)
Defines an instance method for the given class or object. Read more
sourcefn define_private_method<I: Object, O: Object>(
&mut self,
name: &str,
callback: Callback<I, O>
)
fn define_private_method<I: Object, O: Object>(
&mut self,
name: &str,
callback: Callback<I, O>
)
Defines a private instance method for the given class or object. Read more
sourcefn define_singleton_method<I: Object, O: Object>(
&mut self,
name: &str,
callback: Callback<I, O>
)
fn define_singleton_method<I: Object, O: Object>(
&mut self,
name: &str,
callback: Callback<I, O>
)
Defines a class method for given class or singleton method for object. Read more
sourcefn def<I: Object, O: Object>(&mut self, name: &str, callback: Callback<I, O>)
fn def<I: Object, O: Object>(&mut self, name: &str, callback: Callback<I, O>)
An alias for define_method
(similar to Ruby syntax def some_method
).
sourcefn def_private<I: Object, O: Object>(
&mut self,
name: &str,
callback: Callback<I, O>
)
fn def_private<I: Object, O: Object>(
&mut self,
name: &str,
callback: Callback<I, O>
)
An alias for define_private_method
(similar to Ruby syntax private def some_method
).
sourcefn def_self<I: Object, O: Object>(
&mut self,
name: &str,
callback: Callback<I, O>
)
fn def_self<I: Object, O: Object>(
&mut self,
name: &str,
callback: Callback<I, O>
)
An alias for define_singleton_method
(similar to Ruby def self.some_method
).
sourceunsafe fn send(&self, method: &str, arguments: &[AnyObject]) -> AnyObject
unsafe fn send(&self, method: &str, arguments: &[AnyObject]) -> AnyObject
Calls a given method on an object similarly to Ruby Object#send
method Read more
sourcefn respond_to(&self, method: &str) -> bool
fn respond_to(&self, method: &str) -> bool
Checks whether the object responds to given method Read more
sourcefn protect_send(
&self,
method: &str,
arguments: &[AnyObject]
) -> Result<AnyObject, AnyException>
fn protect_send(
&self,
method: &str,
arguments: &[AnyObject]
) -> Result<AnyObject, AnyException>
protect_send
returns Result<AnyObject, AnyObject> Read more
sourcefn protect_public_send(
&self,
method: &str,
arguments: &[AnyObject]
) -> Result<AnyObject, AnyException>
fn protect_public_send(
&self,
method: &str,
arguments: &[AnyObject]
) -> Result<AnyObject, AnyException>
protect_public_send
returns Result<AnyObject, AnyObject> Read more
sourcefn to_any_object(&self) -> AnyObject
fn to_any_object(&self) -> AnyObject
Converts struct to AnyObject
Read more
sourcefn instance_variable_get(&self, variable: &str) -> AnyObject
fn instance_variable_get(&self, variable: &str) -> AnyObject
Gets an instance variable of object Read more
sourcefn instance_variable_set<T: Object>(
&mut self,
variable: &str,
value: T
) -> AnyObject
fn instance_variable_set<T: Object>(
&mut self,
variable: &str,
value: T
) -> AnyObject
Sets an instance variable for object Read more
sourceunsafe fn to<T: Object>(&self) -> T
unsafe fn to<T: Object>(&self) -> T
Unsafely casts current object to the specified Ruby type Read more
sourcefn try_convert_to<T: VerifiedObject>(&self) -> Result<T, AnyException>
fn try_convert_to<T: VerifiedObject>(&self) -> Result<T, AnyException>
Safely casts current object to the specified Ruby type Read more
sourceimpl TryConvert<AnyObject> for AnyException
impl TryConvert<AnyObject> for AnyException
sourceimpl TryConvert<AnyObject> for RString
impl TryConvert<AnyObject> for RString
Implicit or nil
conversion
Examples
use rutie::{RString, Fixnum, VM, TryConvert, NilClass, Object};
let four = Fixnum::new(4);
let result = RString::try_convert(four.to_any_object());
assert_eq!(result, Err(NilClass::new()));
let five = RString::new_utf8("5");
let result2 = RString::try_convert(five.to_any_object());
if let Ok(r) = result2 {
assert_eq!(r.to_str(), "5")
} else {
unreachable!()
}
Ruby:
four = 4
result = String.try_convert(four)
result == nil
five = "5"
result = String.try_convert(five)
result == "5"
sourceimpl VerifiedObject for AnyObject
impl VerifiedObject for AnyObject
fn is_correct_type<T: Object>(_: &T) -> bool
fn error_message() -> &'static str
Auto Trait Implementations
impl RefUnwindSafe for AnyObject
impl Send for AnyObject
impl Sync for AnyObject
impl Unpin for AnyObject
impl UnwindSafe for AnyObject
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> ToOwned for T where
T: Clone,
impl<T> ToOwned for T where
T: Clone,
type Owned = T
type Owned = T
The resulting type after obtaining ownership.
sourcefn clone_into(&self, target: &mut T)
fn clone_into(&self, target: &mut T)
toowned_clone_into
)Uses borrowed data to replace owned data, usually by cloning. Read more