Struct rutie::Array

source · []
#[repr(C)]
pub struct Array { /* private fields */ }
Expand description

Array

Implementations

Creates a new instance of empty Array.

Examples
use rutie::{Array, VM};

Array::new();

Ruby:

[]

Creates a new instance of empty Array with reserved space for capacity elements.

Examples
use rutie::{Array, Fixnum, VM};

let mut array = Array::with_capacity(2);

assert_eq!(array.length(), 0);

array.push(Fixnum::new(1));
array.push(Fixnum::new(2));

assert_eq!(array.length(), 2);

Ruby:

[]

Retrieves the length of the array.

Examples
use rutie::{Array, Fixnum, VM};

let mut array = Array::new().push(Fixnum::new(1));

assert_eq!(array.length(), 1);

array.push(Fixnum::new(2));

assert_eq!(array.length(), 2);

Ruby:

array = [1]
array.length == 1

array << 2
array.length == 2

Retrieves an AnyObject from the element at index position.

Examples
use rutie::{Array, Fixnum, Object, VM};

let array = Array::new().push(Fixnum::new(1));

assert_eq!(array.at(0).try_convert_to::<Fixnum>(), Ok(Fixnum::new(1)));

Ruby:

array = [1]

array[0] == 1

Joins all elements of Array to Ruby String.

Examples
use rutie::{Array, RString, VM};

let array = Array::new()
    .push(RString::new_utf8("Hello"))
    .push(RString::new_utf8("World!"));

let joined_string = array.join(RString::new_utf8(", "));

assert_eq!(joined_string.to_str(), "Hello, World!");

Ruby:

array = ['Hello', 'World!']

joined_string = array.join(', ')

joined_string == 'Hello, World!'

Pushes an object to Array.

Examples
use rutie::{Array, Fixnum, Object, VM};

let mut array = Array::new();

array.push(Fixnum::new(1));

assert_eq!(array.at(0).try_convert_to::<Fixnum>(), Ok(Fixnum::new(1)));

Ruby:

array = []
array << 1

array[0] == 1

Stores an object at index position.

Examples
use rutie::{Array, Fixnum, Object, VM};

let mut array = Array::new().push(Fixnum::new(1));

array.store(0, Fixnum::new(2));

assert_eq!(array.at(0).try_convert_to::<Fixnum>(), Ok(Fixnum::new(2)));

Ruby:

array = [1]
array[0] = 2

array[0] == 2

Removes and returns the last element of the array.

Examples
use rutie::{Array, Fixnum, Object, VM};

let mut array = Array::new().push(Fixnum::new(1));

assert_eq!(array.pop().try_convert_to::<Fixnum>(), Ok(Fixnum::new(1)));

Ruby:

array = [1]

array.pop == 1

Inserts item at the beggining of the array.

Examples
use rutie::{Array, Fixnum, Object, VM};

let mut array = Array::new().push(Fixnum::new(1));

array.unshift(Fixnum::new(2));

assert_eq!(array.at(0).try_convert_to::<Fixnum>(), Ok(Fixnum::new(2)));

Ruby:

array = [1]
array.unshift(2)

array[0] == 2

Removes the first item of the array and returns it.

Examples
use rutie::{Array, Fixnum, Object, VM};

let mut array = Array::new().push(Fixnum::new(1)).push(Fixnum::new(2));

let item = array.shift();

assert_eq!(item.try_convert_to::<Fixnum>(), Ok(Fixnum::new(1)));
assert_eq!(array.at(0).try_convert_to::<Fixnum>(), Ok(Fixnum::new(2)));

Ruby:

array = [1, 2]

item = array.shift

item == 1
array[0] == 2

Creates a copy of the array.

Examples
use rutie::{Array, Fixnum, Object, VM};

let array = Array::new().push(Fixnum::new(1));
let copy = array.dup();

assert_eq!(array.at(0), copy.at(0));

Ruby:

array = [1]
copy = array.dup

array[0] == copy[0]

Creates a string representation of the array.

Examples
use rutie::{Array, Fixnum, VM};

let array = Array::new().push(Fixnum::new(1)).push(Fixnum::new(2));

assert_eq!(array.to_s().to_str(), "[1, 2]");

Ruby:

array = [1, 2]

array.to_s == "[1, 2]"

Returns a new array containing array’s elements in reverse order.

Examples
use rutie::{Array, Fixnum, Object, VM};

let mut array = Array::new().push(Fixnum::new(1)).push(Fixnum::new(2));

let reversed_array = array.reverse();

assert_eq!(reversed_array.at(0).try_convert_to::<Fixnum>(), Ok(Fixnum::new(2)));
assert_eq!(reversed_array.at(1).try_convert_to::<Fixnum>(), Ok(Fixnum::new(1)));

Ruby:

array = [1, 2]

reversed_array = array.reverse

reversed_array[0] == 2
reversed_array[1] == 1

Reverses self in place.

Examples
use rutie::{Array, Fixnum, Object, VM};

let mut array = Array::new().push(Fixnum::new(1)).push(Fixnum::new(2));

array.reverse_bang();

assert_eq!(array.at(0).try_convert_to::<Fixnum>(), Ok(Fixnum::new(2)));
assert_eq!(array.at(1).try_convert_to::<Fixnum>(), Ok(Fixnum::new(1)));

Ruby:

array = [1, 2]

array.reverse!

array[0] == 2
array[1] == 1

Appends the elements of other array to self.

Examples
use rutie::{Array, Fixnum, Object, VM};

let mut array = Array::new().push(Fixnum::new(1));
let other = Array::new().push(Fixnum::new(2));

array.concat(&other);

assert_eq!(array.at(0).try_convert_to::<Fixnum>(), Ok(Fixnum::new(1)));
assert_eq!(array.at(1).try_convert_to::<Fixnum>(), Ok(Fixnum::new(2)));

Ruby:

array = [1]
other = [2]

array.concat(other)

array[0] == 1
array[1] == 2

Returns a new array created by sorting self.

Examples
use rutie::{Array, Fixnum, Object, VM};

let array = Array::new().push(Fixnum::new(2)).push(Fixnum::new(1));

let sorted_array = array.sort();

assert_eq!(sorted_array.at(0).try_convert_to::<Fixnum>(), Ok(Fixnum::new(1)));
assert_eq!(sorted_array.at(1).try_convert_to::<Fixnum>(), Ok(Fixnum::new(2)));

Ruby:

array = [2, 1]

sorted_array = array.sort

sorted_array[0] == 1
sorted_array[1] == 2

Sorts the array in place.

Examples
use rutie::{Array, Fixnum, Object, VM};

let mut array = Array::new().push(Fixnum::new(2)).push(Fixnum::new(1));

array.sort_bang();

assert_eq!(array.at(0).try_convert_to::<Fixnum>(), Ok(Fixnum::new(1)));
assert_eq!(array.at(1).try_convert_to::<Fixnum>(), Ok(Fixnum::new(2)));

Ruby:

array = [2, 1]

array.sort!

array[0] == 1
array[1] == 2

Returns an Enumerator instance

Examples
use rutie::{Array, Fixnum, Object, VM, VerifiedObject, Enumerator};

let enumerator = Array::new().push(Fixnum::new(2)).push(Fixnum::new(1)).to_enum();

assert!(Enumerator::is_correct_type(&enumerator), "incorrect type!");

Ruby:

enumerator = [2, 1].to_enum

Enumerator === enumerator

Trait Implementations

Formats the value using the given formatter. Read more

Returns the “default value” for a type. Read more

Converts to this type from the input type.

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);
}

Creates a value from an iterator. Read more

Converts this type into the (usually inferred) input type.

Converts this type into the (usually inferred) input type.

Allows Arrays to be iterable in Rust.

Examples

use rutie::{Array, Fixnum, Object, VM};

let mut array = Array::new()
    .push(Fixnum::new(1))
    .push(Fixnum::new(2))
    .push(Fixnum::new(3));

let mut sum: i64 = 0;

for item in array.into_iter() {
    sum += item.try_convert_to::<Fixnum>().unwrap().to_i64();
}

assert_eq!(sum, 6);

The type of the elements being iterated over.

Which kind of iterator are we turning this into?

Creates an iterator from a value. Read more

Returns internal value of current object. Read more

Returns a class of current object. Read more

Returns a singleton class of current object. Read more

Gets an immutable reference to the Rust structure which is wrapped into a Ruby object. Read more

Gets a mutable reference to the Rust structure which is wrapped into a Ruby object.

Wraps calls to the object. Read more

Defines an instance method for the given class or object. Read more

Defines a private instance method for the given class or object. Read more

Defines a class method for given class or singleton method for object. Read more

An alias for define_method (similar to Ruby syntax def some_method).

An alias for define_private_method (similar to Ruby syntax private def some_method).

An alias for define_singleton_method (similar to Ruby def self.some_method).

Calls a given method on an object similarly to Ruby Object#send method Read more

Alias for Ruby’s == Read more

Alias for Ruby’s === Read more

Alias for Ruby’s eql? Read more

Alias for Ruby’s equal? Read more

Checks whether the object responds to given method Read more

protect_send returns Result<AnyObject, AnyObject> Read more

protect_public_send returns Result<AnyObject, AnyObject> Read more

Checks whether the object is nil Read more

Converts struct to AnyObject Read more

Gets an instance variable of object Read more

Sets an instance variable for object Read more

Returns the freeze status of the object. Read more

Prevents further modifications to the object. Read more

Unsafely casts current object to the specified Ruby type Read more

Safely casts current object to the specified Ruby type Read more

Determines the value type of the object Read more

This method tests for self and other values to be equal, and is used by ==. Read more

This method tests for !=.

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.