[−][src]Enum artichoke_backend::def::EnclosingRubyScope
Typesafe wrapper for the RClass *
of the enclosing scope
for an mruby Module
or Class
.
In Ruby, classes and modules can be defined inside of another class or
module. mruby only supports resolving RClass
pointers
relative to an enclosing scope. This can be the top level with
mrb_class_get
and
mrb_module_get
or it can be under another class
with mrb_class_get_under
or module with
mrb_module_get_under
.
Because there is no C API to resolve class and module names directly, each
class-like holds a reference to its enclosing scope so it can recursively
resolve its enclosing RClass *
.
Variants
Class(ClassScope)
Reference to a Ruby Class
enclosing scope.
Module(ModuleScope)
Reference to a Ruby Module
enclosing scope.
Implementations
impl EnclosingRubyScope
[src]
#[must_use]pub fn class(spec: &Spec) -> Self
[src]
Factory for EnclosingRubyScope::Class
that clones a class::Spec
.
This function is useful when extracting an enclosing scope from the class registry.
#[must_use]pub fn module(spec: &Spec) -> Self
[src]
Factory for EnclosingRubyScope::Module
that clones a
module::Spec
.
This function is useful when extracting an enclosing scope from the module registry.
pub unsafe fn rclass(&self, mrb: *mut mrb_state) -> Option<NonNull<RClass>>
[src]
Resolve the RClass *
of the wrapped class or module.
Return None
if the class-like has no EnclosingRubyScope
.
The current implemention results in recursive calls to this function for each enclosing scope.
Safety
This function must be called within an Artichoke::with_ffi_boundary
closure because the FFI APIs called in this function may require access
to the Artichoke `State.
#[must_use]pub fn fqname(&self) -> Cow<'_, str>
[src]
Get the fully qualified name of the wrapped class or module.
For example, in the following Ruby code, C
has an fqname of A::B::C
.
module A
class B
module C
CONST = 1
end
end
end
The current implemention results in recursive calls to this function for each enclosing scope.
Trait Implementations
impl Clone for EnclosingRubyScope
[src]
fn clone(&self) -> EnclosingRubyScope
[src]
pub fn clone_from(&mut self, source: &Self)
1.0.0[src]
impl Debug for EnclosingRubyScope
[src]
impl Eq for EnclosingRubyScope
[src]
impl Hash for EnclosingRubyScope
[src]
fn hash<__H: Hasher>(&self, state: &mut __H)
[src]
pub fn hash_slice<H>(data: &[Self], state: &mut H) where
H: Hasher,
1.3.0[src]
H: Hasher,
impl PartialEq<EnclosingRubyScope> for EnclosingRubyScope
[src]
fn eq(&self, other: &EnclosingRubyScope) -> bool
[src]
fn ne(&self, other: &EnclosingRubyScope) -> bool
[src]
impl StructuralEq for EnclosingRubyScope
[src]
impl StructuralPartialEq for EnclosingRubyScope
[src]
Auto Trait Implementations
impl RefUnwindSafe for EnclosingRubyScope
[src]
impl Send for EnclosingRubyScope
[src]
impl Sync for EnclosingRubyScope
[src]
impl Unpin for EnclosingRubyScope
[src]
impl UnwindSafe for EnclosingRubyScope
[src]
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
pub fn to_owned(&self) -> T
[src]
pub fn clone_into(&self, target: &mut T)
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
pub fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
[src]
V: MultiLane<T>,