[][src]Trait vessels::reflect::Trait

pub trait Trait<T: Reflected + ?Sized>: Sync + Send {
    fn call(
        &self,
        index: MethodIndex,
        args: Vec<Box<dyn Any + Send + Sync>>
    ) -> Result<Box<dyn Any + Send + Sync>, CallError>;
fn call_mut(
        &mut self,
        index: MethodIndex,
        args: Vec<Box<dyn Any + Send + Sync>>
    ) -> Result<Box<dyn Any + Send + Sync>, CallError>;
fn call_move(
        self: Box<Self>,
        index: MethodIndex,
        args: Vec<Box<dyn Any + Send + Sync>>
    ) -> Result<Box<dyn Any + Send + Sync>, CallError>;
fn by_name(&self, name: &str) -> Result<MethodIndex, NameError>;
fn count(&self) -> MethodIndex;
fn name_of(&self, index: MethodIndex) -> Result<String, OutOfRangeError>;
fn this(&self) -> TypeId;
fn name(&self) -> String;
fn types(&self, index: MethodIndex) -> Result<MethodTypes, OutOfRangeError>;
fn supertraits(&self) -> Vec<TypeId>;
fn upcast_erased(
        self: Box<Self>,
        ty: TypeId
    ) -> Result<Box<dyn Erased>, CastError>;
fn erase(self: Box<Self>) -> Box<dyn Erased>; }

Required methods

fn call(
    &self,
    index: MethodIndex,
    args: Vec<Box<dyn Any + Send + Sync>>
) -> Result<Box<dyn Any + Send + Sync>, CallError>

fn call_mut(
    &mut self,
    index: MethodIndex,
    args: Vec<Box<dyn Any + Send + Sync>>
) -> Result<Box<dyn Any + Send + Sync>, CallError>

fn call_move(
    self: Box<Self>,
    index: MethodIndex,
    args: Vec<Box<dyn Any + Send + Sync>>
) -> Result<Box<dyn Any + Send + Sync>, CallError>

fn by_name(&self, name: &str) -> Result<MethodIndex, NameError>

fn count(&self) -> MethodIndex

fn name_of(&self, index: MethodIndex) -> Result<String, OutOfRangeError>

fn this(&self) -> TypeId

fn name(&self) -> String

fn types(&self, index: MethodIndex) -> Result<MethodTypes, OutOfRangeError>

fn supertraits(&self) -> Vec<TypeId>

Returns all supertraits in the form TypeId::of<dyn SomeTrait> for each supertrait SomeTrait.

fn upcast_erased(
    self: Box<Self>,
    ty: TypeId
) -> Result<Box<dyn Erased>, CastError>

For a TypeId that is TypeId::of<dyn SomeTrait> returns the erasure of a concrete type Box<dyn SomeTrait> which can then be downcasted into.

fn erase(self: Box<Self>) -> Box<dyn Erased>

Loading content...

Implementors

impl<T: Trait<T> + Reflected + ?Sized> Trait<T> for Shared<T>[src]

Loading content...