Trait StableApiDefinition

Source
pub trait StableApiDefinition {
    const VERSION_MAJOR: u32;
    const VERSION_MINOR: u32;
Show 29 methods // Required methods unsafe fn rstring_len(&self, obj: VALUE) -> c_long; unsafe fn rstring_ptr(&self, obj: VALUE) -> *const c_char; unsafe fn rarray_len(&self, obj: VALUE) -> c_long; unsafe fn rarray_const_ptr(&self, obj: VALUE) -> *const VALUE; unsafe fn rbasic_class(&self, obj: VALUE) -> Option<NonNull<VALUE>>; unsafe fn frozen_p(&self, obj: VALUE) -> bool; unsafe fn bignum_positive_p(&self, obj: VALUE) -> bool; fn special_const_p(&self, value: VALUE) -> bool; unsafe fn builtin_type(&self, obj: VALUE) -> ruby_value_type; unsafe fn type_p(&self, obj: VALUE, ty: ruby_value_type) -> bool; fn nil_p(&self, obj: VALUE) -> bool; fn fixnum_p(&self, obj: VALUE) -> bool; unsafe fn dynamic_sym_p(&self, obj: VALUE) -> bool; fn static_sym_p(&self, obj: VALUE) -> bool; unsafe fn symbol_p(&self, obj: VALUE) -> bool; unsafe fn float_type_p(&self, obj: VALUE) -> bool; unsafe fn integer_type_p(&self, obj: VALUE) -> bool; fn flonum_p(&self, obj: VALUE) -> bool; fn immediate_p(&self, obj: VALUE) -> bool; fn rb_test(&self, ob: VALUE) -> bool; unsafe fn rb_type(&self, obj: VALUE) -> ruby_value_type; unsafe fn rstring_interned_p(&self, obj: VALUE) -> bool; fn thread_sleep(&self, duration: Duration); unsafe fn rtypeddata_p(&self, obj: VALUE) -> bool; unsafe fn rtypeddata_embedded_p(&self, obj: VALUE) -> bool; unsafe fn rtypeddata_type(&self, obj: VALUE) -> *const rb_data_type_t; unsafe fn rtypeddata_get_data(&self, obj: VALUE) -> *mut c_void; // Provided methods fn version(&self) -> (u32, u32) { ... } unsafe fn bignum_negative_p(&self, obj: VALUE) -> bool { ... }
}

Required Associated Constants§

Required Methods§

Source

unsafe fn rstring_len(&self, obj: VALUE) -> c_long

Get the length of a Ruby string (akin to RSTRING_LEN).

§Safety

This function is unsafe because it dereferences a raw pointer to get access to underlying Ruby data. The caller must ensure that the pointer is valid.

Source

unsafe fn rstring_ptr(&self, obj: VALUE) -> *const c_char

Get a pointer to the bytes of a Ruby string (akin to RSTRING_PTR).

§Safety

This function is unsafe because it dereferences a raw pointer to get access to underlying Ruby data. The caller must ensure that the pointer is valid.

Source

unsafe fn rarray_len(&self, obj: VALUE) -> c_long

Get the length of a Ruby array (akin to RARRAY_LEN).

§Safety

This function is unsafe because it dereferences a raw pointer to get access to underlying Ruby data. The caller must ensure that the pointer is valid.

Source

unsafe fn rarray_const_ptr(&self, obj: VALUE) -> *const VALUE

Get a pointer to the elements of a Ruby array (akin to RARRAY_CONST_PTR).

§Safety

This function is unsafe because it dereferences a raw pointer to get access to underlying Ruby data. The caller must ensure that the pointer is valid.

Source

unsafe fn rbasic_class(&self, obj: VALUE) -> Option<NonNull<VALUE>>

Get the class from a VALUE which contains an RBasic struct.

VALUE is a valid pointer to a non-immediate object.

§Safety

This function is unsafe because it dereferences a raw pointer to get access to underlying RBasic struct. The caller must ensure that the VALUE is a valid pointer to an RBasic struct.

Source

unsafe fn frozen_p(&self, obj: VALUE) -> bool

Checks if the given object is frozen.

VALUE is a valid pointer to a non-immediate object.

§Safety

This function is unsafe because it may dereference a raw pointer to get access to underlying RBasic struct. The caller must ensure that the VALUE is a valid pointer to an RBasic struct.

Source

unsafe fn bignum_positive_p(&self, obj: VALUE) -> bool

Tests if a bignum is positive.

§Safety

This function is unsafe because it dereferences a raw pointer to get access to underlying RBasic struct. The caller must ensure that the VALUE is a valid pointer to a bignum.

Source

fn special_const_p(&self, value: VALUE) -> bool

Tests if the given value is a special constant.

Source

unsafe fn builtin_type(&self, obj: VALUE) -> ruby_value_type

Queries the type of the object.

§Note

The input obj must not be a special constant.

§Safety

This function is unsafe because it could dereference a raw pointer when attemping to access the underlying [RBasic] struct.

Source

unsafe fn type_p(&self, obj: VALUE, ty: ruby_value_type) -> bool

Tests if the object’s type is the given type.

§Safety

This function is unsafe because it could dereference a raw pointer when attemping to access the underlying [RBasic] struct.

Source

fn nil_p(&self, obj: VALUE) -> bool

Checks if the given object is nil.

Source

fn fixnum_p(&self, obj: VALUE) -> bool

Checks if the given object is a so-called Fixnum.

Source

unsafe fn dynamic_sym_p(&self, obj: VALUE) -> bool

Checks if the given object is a dynamic symbol.

§Safety

This function is unsafe because it could dereference a raw pointer when attemping to access the underlying [RBasic] struct.

Source

fn static_sym_p(&self, obj: VALUE) -> bool

Checks if the given object is a static symbol.

Source

unsafe fn symbol_p(&self, obj: VALUE) -> bool

Checks if the given object is a symbol.

§Safety

This function is unsafe because it could dereference a raw pointer when attemping to access the underlying [RBasic] struct.

Source

unsafe fn float_type_p(&self, obj: VALUE) -> bool

Checks if the given object is a so-called Flonum.

§Safety

This function is unsafe because it could dereference a raw pointer when attemping to access the underlying [RBasic] struct.

Source

unsafe fn integer_type_p(&self, obj: VALUE) -> bool

Checks if the given object is an integer type

§Safety

This function is unsafe because it could dereference a raw pointer when attemping to access the underlying [RBasic] struct.

Source

fn flonum_p(&self, obj: VALUE) -> bool

Checks if the given object is a so-called Flonum.

Source

fn immediate_p(&self, obj: VALUE) -> bool

Checks if the given object is an immediate i.e. an object which has no corresponding storage inside of the object space.

Source

fn rb_test(&self, ob: VALUE) -> bool

Emulates Ruby’s “if” statement by testing if the given obj is neither Qnil or Qfalse.

§Safety

This function is unsafe because it could dereference a raw pointer when attemping to access the underlying [RBasic] struct.

Source

unsafe fn rb_type(&self, obj: VALUE) -> ruby_value_type

Queries the type of the object. Identical to StableApi.builtin_type, except it can also accept special constants.

§Safety

This function is unsafe because it could dereference a raw pointer when attemping to access the underlying [RBasic] struct.

Source

unsafe fn rstring_interned_p(&self, obj: VALUE) -> bool

Check if a Ruby string is interned (akin to RSTRING_FSTR).

§Safety

This function is unsafe because it dereferences a raw pointer to get access to underlying flags of the RString. The caller must ensure that the VALUE is a valid pointer to an RString.

Source

fn thread_sleep(&self, duration: Duration)

Blocks the current thread until the given duration has passed.

Source

unsafe fn rtypeddata_p(&self, obj: VALUE) -> bool

Checks if the given object is an RTypedData.

§Safety

This function is unsafe because it dereferences a raw pointer to get access to underlying Ruby data. The caller must ensure that the pointer is valid and points to a T_DATA object.

Source

unsafe fn rtypeddata_embedded_p(&self, obj: VALUE) -> bool

Checks if the given RTypedData is embedded.

§Safety

This function is unsafe because it dereferences a raw pointer to get access to underlying Ruby data. The caller must ensure that the pointer is valid and points to an RTypedData object.

Source

unsafe fn rtypeddata_type(&self, obj: VALUE) -> *const rb_data_type_t

Gets the data type from an RTypedData object.

§Safety

This function is unsafe because it dereferences a raw pointer to get access to underlying Ruby data. The caller must ensure that the pointer is valid and points to an RTypedData object.

Source

unsafe fn rtypeddata_get_data(&self, obj: VALUE) -> *mut c_void

Gets the data pointer from an RTypedData object.

§Safety

This function is unsafe because it dereferences a raw pointer to get access to underlying Ruby data. The caller must ensure that the pointer is valid and points to an RTypedData object.

Provided Methods§

Source

fn version(&self) -> (u32, u32)

Source

unsafe fn bignum_negative_p(&self, obj: VALUE) -> bool

Tests if a bignum is negative.

§Safety

This function is unsafe because it dereferences a raw pointer to get access to underlying RBasic struct. The caller must ensure that the VALUE is a valid pointer to a bignum.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§