pub trait ClassRegistry {
type Value;
type Error;
type Spec: 'static;
// Required methods
fn def_class<T>(&mut self, spec: Self::Spec) -> Result<(), Self::Error>
where T: Any;
fn class_spec<T>(&self) -> Result<Option<&Self::Spec>, Self::Error>
where T: Any;
fn class_of<T>(&mut self) -> Result<Option<Self::Value>, Self::Error>
where T: Any;
fn new_instance<T>(
&mut self,
args: &[Self::Value],
) -> Result<Option<Self::Value>, Self::Error>
where T: Any;
// Provided method
fn is_class_defined<T>(&self) -> bool
where T: Any { ... }
}
Expand description
Define and store class specs on an interpreter.
A class spec is a static set of information the interpreter requires to
define a Ruby Class
object.
Required Associated Types§
Required Methods§
Sourcefn def_class<T>(&mut self, spec: Self::Spec) -> Result<(), Self::Error>where
T: Any,
fn def_class<T>(&mut self, spec: Self::Spec) -> Result<(), Self::Error>where
T: Any,
Create a class definition bound to a Rust type T
.
Class definitions have the same lifetime as the interpreter.
§Errors
If the class registry state is inaccessible, an error is returned.
Sourcefn class_spec<T>(&self) -> Result<Option<&Self::Spec>, Self::Error>where
T: Any,
fn class_spec<T>(&self) -> Result<Option<&Self::Spec>, Self::Error>where
T: Any,
Retrieve a class definition from the state bound to Rust type T
.
This function returns None
if type T
has not had a class spec
registered for it using ClassRegistry::def_class
.
§Errors
If the class registry state is inaccessible, an error is returned.
Sourcefn class_of<T>(&mut self) -> Result<Option<Self::Value>, Self::Error>where
T: Any,
fn class_of<T>(&mut self) -> Result<Option<Self::Value>, Self::Error>where
T: Any,
Retrieve a boxed Ruby value containing a Class
object for the Class
bound to Rust type T
.
If the interpreter cannot find or load a class associated with T
,
Ok(None)
is returned.
§Errors
If the class registry state is inaccessible, an error is returned.
Sourcefn new_instance<T>(
&mut self,
args: &[Self::Value],
) -> Result<Option<Self::Value>, Self::Error>where
T: Any,
fn new_instance<T>(
&mut self,
args: &[Self::Value],
) -> Result<Option<Self::Value>, Self::Error>where
T: Any,
Create a new instance of the class bound to the Rust type T
.
This method resolves the class referenced by the type T
and calls
new
on this Ruby class with the given arguments.
If the interpreter cannot find or load a class associated with T
,
Ok(None)
is returned.
§Errors
If the class registry state is inaccessible, an error is returned.
If an exception is raised on the interpreter, then an error is returned.
Provided Methods§
Sourcefn is_class_defined<T>(&self) -> boolwhere
T: Any,
fn is_class_defined<T>(&self) -> boolwhere
T: Any,
Retrieve whether a class definition exists from the state bound to Rust type T
.
§Errors
If the class registry state is inaccessible, an error is returned.
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.