[][src]Struct rosy::Range

#[repr(transparent)]
pub struct Range<S = AnyObject, E = S> { /* fields omitted */ }

An instance of Ruby's Range type.

This type supports being instantiated from Range, RangeInclusive, and RangeTo.

a..b and a...b versus a..b and a..=b

In Rust (and many other languages), a..b denotes an inclusive range. However, in Ruby this syntax denotes an exclusive range.

In Rust, a..=b denotes an exclusive range whereas in Ruby, ... denotes an inclusive range.

Examples

An exclusive range can be instantiated quite simply:

use rosy::{Range, Integer, Object};

let range = Range::<Integer>::new(0..10).unwrap();
assert_eq!(range.to_s(), "0...10");

The start and end bounds can be retrieved via into_bounds:

use std::ops::Bound;

let range = Range::<Integer>::new(1..=10).unwrap();

let (start, end) = range.into_bounds();

assert_eq!(start, 1);
assert_eq!(end, Bound::Included(Integer::from(10)));

Methods

impl Range[src]

pub fn from_bounds(
    start: AnyObject,
    end: AnyObject,
    exclusive: bool
) -> Result<Self>
[src]

Creates a new instance from the given bounds, returning an exception if one is raised.

If end is nil, an infinite (unbounded) range is produced.

pub unsafe fn from_bounds_unchecked(
    start: AnyObject,
    end: AnyObject,
    exclusive: bool
) -> Self
[src]

Creates a new instance from the given bounds, without checking for exceptions.

If end is nil, an infinite (unbounded) range is produced.

Safety

An exception may be raised if start and end cannot be compared.

impl<S: Object, E: Object> Range<S, E>[src]

pub fn new<R, A, B>(range: R) -> Result<Self> where
    R: IntoBounds<A, B>,
    A: Into<S>,
    B: Into<E>, 
[src]

Creates a new instance from range, returning an exception if one is raised.

pub unsafe fn new_unchecked<R, A, B>(range: R) -> Self where
    R: IntoBounds<A, B>,
    A: Into<S>,
    B: Into<E>, 
[src]

Creates a new instance from range, without checking for exceptions.

Safety

An exception may be raised if S and E cannot be compared.

pub fn into_any_range(self) -> Range[src]

Returns a range over AnyObjects.

pub fn into_bounds(self) -> (S, Bound<E>)[src]

Returns the start (inclusive) and end bounds of self.

Trait Implementations

impl<S: Object, E: Object> Object for Range<S, E>[src]

fn unique_id() -> Option<u128>[src]

Returns a unique identifier for an object type to facilitate casting. Read more

unsafe fn from_raw(raw: usize) -> Self[src]

Creates a new object from raw without checking. Read more

fn cast<A: Object>(obj: A) -> Option<Self>[src]

Attempts to create an instance by casting obj. Read more

unsafe fn cast_unchecked(obj: impl Object) -> Self[src]

Casts obj to Self without checking its type.

fn into_any_object(self) -> AnyObject[src]

Returns self as an AnyObject.

fn as_any_object(&self) -> &AnyObject[src]

Returns a reference to self as an AnyObject.

fn as_any_slice(&self) -> &[AnyObject][src]

Returns self as a reference to a single-element slice.

fn raw(self) -> usize[src]

Returns the raw object pointer.

unsafe fn as_unchecked<O: Object>(&self) -> &O[src]

Casts self to O without checking whether it is one.

unsafe fn into_unchecked<O: Object>(self) -> O[src]

Converts self to O without checking whether it is one.

fn id(self) -> u64[src]

Returns the object's identifier.

fn ty(self) -> Ty[src]

Returns the virtual type of self.

fn is_ty(self, ty: Ty) -> bool[src]

Returns whether the virtual type of self is ty.

fn class(self) -> Class<Self>[src]

Returns the Class for self. Read more

fn singleton_class(self) -> Class<Self>[src]

Returns the singleton Class of self, creating one if it doesn't exist already. Read more

fn mark(self)[src]

Marks self for Ruby to avoid garbage collecting it.

unsafe fn force_recycle(self)[src]

Forces the garbage collector to free the contents of self. Read more

fn def_singleton_method<N, F>(self, name: N, f: F) -> Result where
    N: Into<SymbolId>,
    F: MethodFn<Self>, 
[src]

Defines a method for name on the singleton class of self that calls f when invoked. Read more

unsafe fn def_singleton_method_unchecked<N, F>(self, name: N, f: F) where
    N: Into<SymbolId>,
    F: MethodFn<Self>, 
[src]

Defines a method for name on the singleton class of self that calls f when invoked. Read more

unsafe fn call(self, method: impl Into<SymbolId>) -> AnyObject[src]

Calls method on self and returns its output. Read more

unsafe fn call_protected(self, method: impl Into<SymbolId>) -> Result<AnyObject>[src]

Calls method on self and returns its output, or an exception if one is raised. Read more

unsafe fn call_with(
    self,
    method: impl Into<SymbolId>,
    args: &[impl Object]
) -> AnyObject
[src]

Calls method on self with args and returns its output. Read more

unsafe fn call_with_protected(
    self,
    method: impl Into<SymbolId>,
    args: &[impl Object]
) -> Result<AnyObject>
[src]

Calls method on self with args and returns its output, or an exception if one is raised. Read more

unsafe fn call_public(self, method: impl Into<SymbolId>) -> AnyObject[src]

Calls the public method on self and returns its output. Read more

unsafe fn call_public_protected(
    self,
    method: impl Into<SymbolId>
) -> Result<AnyObject>
[src]

Calls the public method on self and returns its output, or an exception if one is raised. Read more

unsafe fn call_public_with(
    self,
    method: impl Into<SymbolId>,
    args: &[impl Object]
) -> AnyObject
[src]

Calls the public method on self with args and returns its output. Read more

unsafe fn call_public_with_protected(
    self,
    method: impl Into<SymbolId>,
    args: &[impl Object]
) -> Result<AnyObject>
[src]

Calls the public method on self with args and returns its output, or an exception if one is raised. Read more

fn inspect(self) -> String[src]

Returns a printable string representation of self. Read more

fn to_s(self) -> String[src]

Returns the result of calling the to_s method on self.

fn is_frozen(self) -> bool[src]

Returns whether modifications can be made to self.

fn freeze(self)[src]

Freezes self, preventing any further mutations.

fn is_eql<O: Object>(self, other: &O) -> bool[src]

Returns whether self is equal to other in terms of the eql? method. Read more

fn get_attr<N: Into<SymbolId>>(self, name: N) -> AnyObject[src]

Returns the value for the attribute of self associated with name.

unsafe fn eval(self, args: impl EvalArgs) -> AnyObject[src]

Evaluates args in the context of self. Read more

unsafe fn eval_protected(self, args: impl EvalArgs) -> Result<AnyObject>[src]

Evaluates args in the context of self, returning any raised exceptions. Read more

impl<S: Object, E: Object> IntoBounds<S, E> for Range<S, E>[src]

impl<S: Object, E: Object> PartialEq<AnyObject> for Range<S, E>[src]

#[must_use]
fn ne(&self, other: &Rhs) -> bool
1.0.0[src]

This method tests for !=.

impl<S, E> Copy for Range<S, E>[src]

impl<S, E> Clone for Range<S, E>[src]

fn clone_from(&mut self, source: &Self)1.0.0[src]

Performs copy-assignment from source. Read more

impl<S: Object, E: Object> AsRef<AnyObject> for Range<S, E>[src]

impl<S: Object, E: Object> From<Range<S, E>> for AnyObject[src]

impl<S: Object, E: Object> Debug for Range<S, E>[src]

Auto Trait Implementations

impl<S = AnyObject, E = S> !Send for Range<S, E>

impl<S = AnyObject, E = S> !Sync for Range<S, E>

Blanket Implementations

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> From<T> for T[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> Any for T where
    T: 'static + ?Sized
[src]