pub unsafe trait CGlueBaseVtbl: Sized {
    type OpaqueVtbl: OpaqueVtblBounds;
    type Context: ContextBounds;
    type RetTmp: Sized + Default;

    // Provided method
    fn as_opaque(&self) -> &Self::OpaqueVtbl { ... }
}
Expand description

Trait for CGlue vtables.

Safety

This trait is meant to be implemented by the code generator. If implementing manually, make sure that the OpaqueVtbl is the exact same type, with the only difference being this types.

Required Associated Types§

Provided Methods§

source

fn as_opaque(&self) -> &Self::OpaqueVtbl

Get the opaque vtable for the type.

Object Safety§

This trait is not object safe.

Implementors§

source§

impl<'cglue_a, CGlueC: Opaquable + CGlueObjBase + 'cglue_a> CGlueBaseVtbl for CloneVtbl<'cglue_a, CGlueC>where CGlueC::OpaqueTarget: Opaquable + CGlueObjBase + GenericTypeBounds, CGlueC::ObjType: Clone,

§

type OpaqueVtbl = CloneVtbl<'cglue_a, <CGlueC as Opaquable>::OpaqueTarget>

§

type Context = <CGlueC as CGlueObjBase>::Context

§

type RetTmp = PhantomData<CloneRetTmpPhantom<<CGlueC as CGlueObjBase>::Context>>

source§

impl<'cglue_a, CGlueC: Opaquable + CGlueObjBase + 'cglue_a> CGlueBaseVtbl for BinaryVtbl<'cglue_a, CGlueC>where CGlueC::OpaqueTarget: Opaquable + CGlueObjBase + GenericTypeBounds, CGlueC::ObjType: Binary,

§

type OpaqueVtbl = BinaryVtbl<'cglue_a, <CGlueC as Opaquable>::OpaqueTarget>

§

type Context = <CGlueC as CGlueObjBase>::Context

§

type RetTmp = PhantomData<BinaryRetTmpPhantom<<CGlueC as CGlueObjBase>::Context>>

source§

impl<'cglue_a, CGlueC: Opaquable + CGlueObjBase + 'cglue_a> CGlueBaseVtbl for DebugVtbl<'cglue_a, CGlueC>where CGlueC::OpaqueTarget: Opaquable + CGlueObjBase + GenericTypeBounds, CGlueC::ObjType: Debug,

§

type OpaqueVtbl = DebugVtbl<'cglue_a, <CGlueC as Opaquable>::OpaqueTarget>

§

type Context = <CGlueC as CGlueObjBase>::Context

§

type RetTmp = PhantomData<DebugRetTmpPhantom<<CGlueC as CGlueObjBase>::Context>>

source§

impl<'cglue_a, CGlueC: Opaquable + CGlueObjBase + 'cglue_a> CGlueBaseVtbl for DisplayVtbl<'cglue_a, CGlueC>where CGlueC::OpaqueTarget: Opaquable + CGlueObjBase + GenericTypeBounds, CGlueC::ObjType: Display,

§

type OpaqueVtbl = DisplayVtbl<'cglue_a, <CGlueC as Opaquable>::OpaqueTarget>

§

type Context = <CGlueC as CGlueObjBase>::Context

§

type RetTmp = PhantomData<DisplayRetTmpPhantom<<CGlueC as CGlueObjBase>::Context>>

source§

impl<'cglue_a, CGlueC: Opaquable + CGlueObjBase + 'cglue_a> CGlueBaseVtbl for LowerExpVtbl<'cglue_a, CGlueC>where CGlueC::OpaqueTarget: Opaquable + CGlueObjBase + GenericTypeBounds, CGlueC::ObjType: LowerExp,

§

type OpaqueVtbl = LowerExpVtbl<'cglue_a, <CGlueC as Opaquable>::OpaqueTarget>

§

type Context = <CGlueC as CGlueObjBase>::Context

§

type RetTmp = PhantomData<LowerExpRetTmpPhantom<<CGlueC as CGlueObjBase>::Context>>

source§

impl<'cglue_a, CGlueC: Opaquable + CGlueObjBase + 'cglue_a> CGlueBaseVtbl for LowerHexVtbl<'cglue_a, CGlueC>where CGlueC::OpaqueTarget: Opaquable + CGlueObjBase + GenericTypeBounds, CGlueC::ObjType: LowerHex,

§

type OpaqueVtbl = LowerHexVtbl<'cglue_a, <CGlueC as Opaquable>::OpaqueTarget>

§

type Context = <CGlueC as CGlueObjBase>::Context

§

type RetTmp = PhantomData<LowerHexRetTmpPhantom<<CGlueC as CGlueObjBase>::Context>>

source§

impl<'cglue_a, CGlueC: Opaquable + CGlueObjBase + 'cglue_a> CGlueBaseVtbl for OctalVtbl<'cglue_a, CGlueC>where CGlueC::OpaqueTarget: Opaquable + CGlueObjBase + GenericTypeBounds, CGlueC::ObjType: Octal,

§

type OpaqueVtbl = OctalVtbl<'cglue_a, <CGlueC as Opaquable>::OpaqueTarget>

§

type Context = <CGlueC as CGlueObjBase>::Context

§

type RetTmp = PhantomData<OctalRetTmpPhantom<<CGlueC as CGlueObjBase>::Context>>

source§

impl<'cglue_a, CGlueC: Opaquable + CGlueObjBase + 'cglue_a> CGlueBaseVtbl for PointerVtbl<'cglue_a, CGlueC>where CGlueC::OpaqueTarget: Opaquable + CGlueObjBase + GenericTypeBounds, CGlueC::ObjType: Pointer,

§

type OpaqueVtbl = PointerVtbl<'cglue_a, <CGlueC as Opaquable>::OpaqueTarget>

§

type Context = <CGlueC as CGlueObjBase>::Context

§

type RetTmp = PhantomData<PointerRetTmpPhantom<<CGlueC as CGlueObjBase>::Context>>

source§

impl<'cglue_a, CGlueC: Opaquable + CGlueObjBase + 'cglue_a> CGlueBaseVtbl for UpperExpVtbl<'cglue_a, CGlueC>where CGlueC::OpaqueTarget: Opaquable + CGlueObjBase + GenericTypeBounds, CGlueC::ObjType: UpperExp,

§

type OpaqueVtbl = UpperExpVtbl<'cglue_a, <CGlueC as Opaquable>::OpaqueTarget>

§

type Context = <CGlueC as CGlueObjBase>::Context

§

type RetTmp = PhantomData<UpperExpRetTmpPhantom<<CGlueC as CGlueObjBase>::Context>>

source§

impl<'cglue_a, CGlueC: Opaquable + CGlueObjBase + 'cglue_a> CGlueBaseVtbl for UpperHexVtbl<'cglue_a, CGlueC>where CGlueC::OpaqueTarget: Opaquable + CGlueObjBase + GenericTypeBounds, CGlueC::ObjType: UpperHex,

§

type OpaqueVtbl = UpperHexVtbl<'cglue_a, <CGlueC as Opaquable>::OpaqueTarget>

§

type Context = <CGlueC as CGlueObjBase>::Context

§

type RetTmp = PhantomData<UpperHexRetTmpPhantom<<CGlueC as CGlueObjBase>::Context>>

source§

impl<'cglue_a, CGlueC: Opaquable + CGlueObjBase + 'cglue_a> CGlueBaseVtbl for WriteVtbl<'cglue_a, CGlueC>where CGlueC::OpaqueTarget: Opaquable + CGlueObjBase + GenericTypeBounds, CGlueC::ObjType: Write,

§

type OpaqueVtbl = WriteVtbl<'cglue_a, <CGlueC as Opaquable>::OpaqueTarget>

§

type Context = <CGlueC as CGlueObjBase>::Context

§

type RetTmp = PhantomData<WriteRetTmpPhantom<<CGlueC as CGlueObjBase>::Context>>

source§

impl<'cglue_a, CGlueC: Opaquable + CGlueObjBase + 'cglue_a, T> CGlueBaseVtbl for AsMutVtbl<'cglue_a, CGlueC, T>where T: GenericTypeBounds, CGlueC::OpaqueTarget: Opaquable + CGlueObjBase + GenericTypeBounds, CGlueC::ObjType: AsMut<T>,

§

type OpaqueVtbl = AsMutVtbl<'cglue_a, <CGlueC as Opaquable>::OpaqueTarget, T>

§

type Context = <CGlueC as CGlueObjBase>::Context

§

type RetTmp = PhantomData<AsMutRetTmpPhantom<<CGlueC as CGlueObjBase>::Context, T>>

source§

impl<'cglue_a, CGlueC: Opaquable + CGlueObjBase + 'cglue_a, T> CGlueBaseVtbl for AsRefVtbl<'cglue_a, CGlueC, T>where T: GenericTypeBounds, CGlueC::OpaqueTarget: Opaquable + CGlueObjBase + GenericTypeBounds, CGlueC::ObjType: AsRef<T>,

§

type OpaqueVtbl = AsRefVtbl<'cglue_a, <CGlueC as Opaquable>::OpaqueTarget, T>

§

type Context = <CGlueC as CGlueObjBase>::Context

§

type RetTmp = PhantomData<AsRefRetTmpPhantom<<CGlueC as CGlueObjBase>::Context, T>>