[][src]Trait shred::CastFrom

pub unsafe trait CastFrom<T> {
    fn cast(t: &T) -> &Self;
fn cast_mut(t: &mut T) -> &mut Self; }

Helper trait for the MetaTable. This trait is required to be implemented for a trait to be compatible with the meta table.

Memory safety

Not casting self but e.g. a field to the trait object can result in severe memory safety issues.

Examples

use shred::CastFrom;

trait Foo {
    fn foo1(&self);
    fn foo2(&mut self, x: i32) -> i32;
}

unsafe impl<T> CastFrom<T> for dyn Foo
where
    T: Foo + 'static,
{
    fn cast(t: &T) -> &(dyn Foo + 'static) {
        t
    }

    fn cast_mut(t: &mut T) -> &mut (dyn Foo + 'static) {
        t
    }
}

Required methods

fn cast(t: &T) -> &Self

Casts an immutable T reference to a trait object.

fn cast_mut(t: &mut T) -> &mut Self

Casts a mutable T reference to a trait object.

Loading content...

Implementors

Loading content...