#[repr(C)]
pub struct ProcessInstance<'cglue_a, CGlueInst: 'cglue_a, CGlueCtx: ContextBounds>
where ProcessInstanceContainer<CGlueInst, CGlueCtx>: CGlueObjBase,
{ /* private fields */ }
Expand description

Trait group potentially implementing MemoryView < > + Process < > + VirtualTranslate < > traits.

Optional traits are not implemented here, however. There are numerous conversion functions available for safely retrieving a concrete collection of traits.

check_impl_ functions allow to check if the object implements the wanted traits.

into_impl_ functions consume the object and produce a new final structure that keeps only the required information.

cast_impl_ functions merely check and transform the object into a type that can be transformed back into ProcessInstance without losing data.

as_ref_, and as_mut_ functions obtain references to safe objects, but do not perform any memory transformations either. They are the safest to use, because there is no risk of accidentally consuming the whole object.

Implementations§

source§

impl<'cglue_a, CGlueInst, CGlueCtx: ContextBounds> ProcessInstance<'cglue_a, CGlueInst, CGlueCtx>
where ProcessInstanceContainer<CGlueInst, CGlueCtx>: CGlueObjBase,

source

pub fn enable_virtualtranslate(self) -> Self
where &'cglue_a VirtualTranslateVtbl<'cglue_a, ProcessInstanceContainer<CGlueInst, CGlueCtx>>: Default,

source§

impl<'cglue_a, CGlueInst, CGlueCtx: ContextBounds> ProcessInstance<'cglue_a, CGlueInst, CGlueCtx>
where ProcessInstanceContainer<CGlueInst, CGlueCtx>: CGlueObjBase, &'cglue_a MemoryViewVtbl<'cglue_a, ProcessInstanceContainer<CGlueInst, CGlueCtx>>: 'cglue_a + Default, &'cglue_a ProcessVtbl<'cglue_a, ProcessInstanceContainer<CGlueInst, CGlueCtx>>: 'cglue_a + Default,

source

pub fn new( instance: CGlueInst, context: CGlueCtx, vtbl_virtualtranslate: Option<&'cglue_a VirtualTranslateVtbl<'cglue_a, ProcessInstanceContainer<CGlueInst, CGlueCtx>>> ) -> Self
where &'cglue_a MemoryViewVtbl<'cglue_a, ProcessInstanceContainer<CGlueInst, CGlueCtx>>: 'cglue_a + Default, &'cglue_a ProcessVtbl<'cglue_a, ProcessInstanceContainer<CGlueInst, CGlueCtx>>: 'cglue_a + Default,

Create new instance of ProcessInstance.

source§

impl<'cglue_a, CGlueT> ProcessInstance<'cglue_a, CBox<'cglue_a, CGlueT>, NoContext>

source

pub fn new_boxed( this: CGlueT, vtbl_virtualtranslate: Option<&'cglue_a VirtualTranslateVtbl<'cglue_a, ProcessInstanceContainer<CBox<'cglue_a, CGlueT>, NoContext>>> ) -> Self
where &'cglue_a MemoryViewVtbl<'cglue_a, ProcessInstanceContainer<CBox<'cglue_a, CGlueT>, NoContext>>: 'cglue_a + Default, &'cglue_a ProcessVtbl<'cglue_a, ProcessInstanceContainer<CBox<'cglue_a, CGlueT>, NoContext>>: 'cglue_a + Default,

Create new instance of ProcessInstance.

instance will be moved onto heap.

source§

impl<'cglue_a, CGlueInst, CGlueCtx: ContextBounds> ProcessInstance<'cglue_a, CGlueInst, CGlueCtx>
where ProcessInstanceContainer<CGlueInst, CGlueCtx>: CGlueObjBase,

source

pub fn check_impl_virtualtranslate(&self) -> bool
where ProcessInstanceWithVirtualTranslate<'cglue_a, CGlueInst, CGlueCtx>: 'cglue_a + MemoryView + Process + VirtualTranslate,

Check whether ProcessInstance implements MemoryView < > + Process < > + VirtualTranslate < >.

If this check returns true, it is safe to run consuming conversion operations.

source

pub fn into_impl_virtualtranslate( self ) -> Option<impl 'cglue_a + MemoryView + Process + VirtualTranslate>
where ProcessInstanceFinalWithVirtualTranslate<'cglue_a, CGlueInst, CGlueCtx>: 'cglue_a + MemoryView + Process + VirtualTranslate,

Retrieve a final ProcessInstance variant that implements MemoryView < > + Process < > + VirtualTranslate < >.

This consumes the ProcessInstance, and outputs Some(impl MemoryView < > + Process < > + VirtualTranslate < >), if all types are present.

source

pub fn cast_impl_virtualtranslate( self ) -> Option<ProcessInstanceWithVirtualTranslate<'cglue_a, CGlueInst, CGlueCtx>>
where ProcessInstanceWithVirtualTranslate<'cglue_a, CGlueInst, CGlueCtx>: 'cglue_a + MemoryView + Process + VirtualTranslate,

Retrieve a concrete ProcessInstance variant that implements MemoryView < > + Process < > + VirtualTranslate < >.

This consumes the ProcessInstance, and outputs Some(impl MemoryView < > + Process < > + VirtualTranslate < >), if all types are present. It is possible to cast this type back with the From implementation.

source

pub fn as_mut_impl_virtualtranslate<'b>( &'b mut self ) -> Option<&'b mut (impl 'cglue_a + MemoryView + Process + VirtualTranslate)>
where ProcessInstanceWithVirtualTranslate<'cglue_a, CGlueInst, CGlueCtx>: 'cglue_a + MemoryView + Process + VirtualTranslate,

Retrieve mutable reference to a concrete ProcessInstance variant that implements MemoryView < > + Process < > + VirtualTranslate < >.

source

pub fn as_ref_impl_virtualtranslate<'b>( &'b self ) -> Option<&'b (impl 'cglue_a + MemoryView + Process + VirtualTranslate)>
where ProcessInstanceWithVirtualTranslate<'cglue_a, CGlueInst, CGlueCtx>: 'cglue_a + MemoryView + Process + VirtualTranslate,

Retrieve immutable reference to a concrete ProcessInstance variant that implements MemoryView < > + Process < > + VirtualTranslate < >.

Trait Implementations§

source§

impl<'cglue_a, CGlueInst: Deref, CGlueCtx: ContextBounds> From<(CGlueInst, CGlueCtx)> for ProcessInstance<'cglue_a, CGlueInst, CGlueCtx>
where Self: From<ProcessInstanceContainer<CGlueInst, CGlueCtx>>, ProcessInstanceContainer<CGlueInst, CGlueCtx>: CGlueObjBase, &'cglue_a MemoryViewVtbl<'cglue_a, ProcessInstanceContainer<CGlueInst, CGlueCtx>>: 'cglue_a + Default, &'cglue_a ProcessVtbl<'cglue_a, ProcessInstanceContainer<CGlueInst, CGlueCtx>>: 'cglue_a + Default,

source§

fn from((instance, context): (CGlueInst, CGlueCtx)) -> Self

Converts to this type from the input type.
source§

impl<'cglue_a, CGlueT, CGlueCtx: ContextBounds> From<(CGlueT, CGlueCtx)> for ProcessInstance<'cglue_a, CBox<'cglue_a, CGlueT>, CGlueCtx>
where Self: From<(CBox<'cglue_a, CGlueT>, CGlueCtx)>, ProcessInstanceContainer<CBox<'cglue_a, CGlueT>, CGlueCtx>: CGlueObjBase, &'cglue_a MemoryViewVtbl<'cglue_a, ProcessInstanceContainer<CBox<'cglue_a, CGlueT>, CGlueCtx>>: 'cglue_a + Default, &'cglue_a ProcessVtbl<'cglue_a, ProcessInstanceContainer<CBox<'cglue_a, CGlueT>, CGlueCtx>>: 'cglue_a + Default,

source§

fn from((this, context): (CGlueT, CGlueCtx)) -> Self

Converts to this type from the input type.
source§

impl<'cglue_a, CGlueInst: Deref> From<CGlueInst> for ProcessInstance<'cglue_a, CGlueInst, NoContext>
where Self: From<(CGlueInst, NoContext)>, ProcessInstanceContainer<CGlueInst, NoContext>: CGlueObjBase, &'cglue_a MemoryViewVtbl<'cglue_a, ProcessInstanceContainer<CGlueInst, NoContext>>: 'cglue_a + Default, &'cglue_a ProcessVtbl<'cglue_a, ProcessInstanceContainer<CGlueInst, NoContext>>: 'cglue_a + Default,

source§

fn from(instance: CGlueInst) -> Self

Converts to this type from the input type.
source§

impl<'cglue_a, CGlueT> From<CGlueT> for ProcessInstance<'cglue_a, CBox<'cglue_a, CGlueT>, NoContext>
where Self: From<(CBox<'cglue_a, CGlueT>, NoContext)>, &'cglue_a MemoryViewVtbl<'cglue_a, ProcessInstanceContainer<CBox<'cglue_a, CGlueT>, NoContext>>: 'cglue_a + Default, &'cglue_a ProcessVtbl<'cglue_a, ProcessInstanceContainer<CBox<'cglue_a, CGlueT>, NoContext>>: 'cglue_a + Default,

source§

fn from(instance: CGlueT) -> Self

Converts to this type from the input type.
source§

impl<'cglue_a, CGlueInst: Deref, CGlueCtx: ContextBounds> From<ProcessInstanceContainer<CGlueInst, CGlueCtx>> for ProcessInstance<'cglue_a, CGlueInst, CGlueCtx>
where ProcessInstanceContainer<CGlueInst, CGlueCtx>: CGlueObjBase, CGlueInst::Target: ProcessInstanceVtableFiller<'cglue_a, CGlueInst, CGlueCtx>, &'cglue_a MemoryViewVtbl<'cglue_a, ProcessInstanceContainer<CGlueInst, CGlueCtx>>: 'cglue_a + Default, &'cglue_a ProcessVtbl<'cglue_a, ProcessInstanceContainer<CGlueInst, CGlueCtx>>: 'cglue_a + Default,

source§

fn from(container: ProcessInstanceContainer<CGlueInst, CGlueCtx>) -> Self

Converts to this type from the input type.
source§

impl<'cglue_a, CGlueInst, CGlueCtx: ContextBounds> From<ProcessInstanceWithVirtualTranslate<'cglue_a, CGlueInst, CGlueCtx>> for ProcessInstance<'cglue_a, CGlueInst, CGlueCtx>
where ProcessInstanceContainer<CGlueInst, CGlueCtx>: CGlueObjBase,

source§

fn from( input: ProcessInstanceWithVirtualTranslate<'cglue_a, CGlueInst, CGlueCtx> ) -> Self

Converts to this type from the input type.
source§

impl<CGlueInst: Deref, CGlueCtx: ContextBounds> GetContainer for ProcessInstance<'_, CGlueInst, CGlueCtx>
where ProcessInstanceContainer<CGlueInst, CGlueCtx>: CGlueObjBase,

§

type ContType = ProcessInstanceContainer<CGlueInst, CGlueCtx>

source§

fn ccont_ref(&self) -> &Self::ContType

source§

fn ccont_mut(&mut self) -> &mut Self::ContType

source§

fn into_ccont(self) -> Self::ContType

source§

fn build_with_ccont(&self, container: Self::ContType) -> Self

source§

impl<'cglue_a, CGlueInst, CGlueCtx> GetStaticEquivalent_ for ProcessInstance<'cglue_a, CGlueInst, CGlueCtx>
where ProcessInstanceContainer<CGlueInst, CGlueCtx>: CGlueObjBase, CGlueInst: __StableAbi + 'cglue_a, CGlueCtx: __StableAbi + ContextBounds,

§

type StaticEquivalent = _static_ProcessInstance<'static, <CGlueInst as GetStaticEquivalent_>::StaticEquivalent, <CGlueCtx as GetStaticEquivalent_>::StaticEquivalent>

source§

impl<'cglue_a, CGlueInst, CGlueCtx: ContextBounds> GetVtbl<MemoryViewVtbl<'cglue_a, ProcessInstanceContainer<CGlueInst, CGlueCtx>>> for ProcessInstance<'cglue_a, CGlueInst, CGlueCtx>
where ProcessInstanceContainer<CGlueInst, CGlueCtx>: CGlueObjBase,

source§

fn get_vtbl( &self ) -> &MemoryViewVtbl<'cglue_a, ProcessInstanceContainer<CGlueInst, CGlueCtx>>

source§

impl<'cglue_a, CGlueInst, CGlueCtx: ContextBounds> GetVtbl<ProcessVtbl<'cglue_a, ProcessInstanceContainer<CGlueInst, CGlueCtx>>> for ProcessInstance<'cglue_a, CGlueInst, CGlueCtx>
where ProcessInstanceContainer<CGlueInst, CGlueCtx>: CGlueObjBase,

source§

fn get_vtbl( &self ) -> &ProcessVtbl<'cglue_a, ProcessInstanceContainer<CGlueInst, CGlueCtx>>

source§

impl<'cglue_a, CGlueInst: Opaquable, CGlueCtx: ContextBounds> Opaquable for ProcessInstance<'cglue_a, CGlueInst, CGlueCtx>
where ProcessInstanceContainer<CGlueInst, CGlueCtx>: CGlueObjBase, ProcessInstanceContainer<CGlueInst::OpaqueTarget, CGlueCtx>: CGlueObjBase,

Convert into opaque object.

This is the prerequisite for using underlying trait implementations.

§

type OpaqueTarget = ProcessInstance<'cglue_a, <CGlueInst as Opaquable>::OpaqueTarget, CGlueCtx>

source§

fn into_opaque(self) -> Self::OpaqueTarget

Transform self into an opaque version of the trait object. Read more
source§

impl<'cglue_a, CGlueInst, CGlueCtx> StableAbi for ProcessInstance<'cglue_a, CGlueInst, CGlueCtx>
where ProcessInstanceContainer<CGlueInst, CGlueCtx>: CGlueObjBase, CGlueInst: __StableAbi + 'cglue_a, CGlueCtx: __StableAbi + ContextBounds,

§

type IsNonZeroType = False

Whether this type has a single invalid bit-pattern. Read more
source§

const LAYOUT: &'static TypeLayout = _

The layout of the type provided by implementors.
source§

const ABI_CONSTS: AbiConsts = _

const-equivalents of the associated types.

Auto Trait Implementations§

§

impl<'cglue_a, CGlueInst, CGlueCtx> RefUnwindSafe for ProcessInstance<'cglue_a, CGlueInst, CGlueCtx>
where CGlueCtx: RefUnwindSafe, CGlueInst: RefUnwindSafe,

§

impl<'cglue_a, CGlueInst, CGlueCtx> Send for ProcessInstance<'cglue_a, CGlueInst, CGlueCtx>
where CGlueInst: Send + Sync,

§

impl<'cglue_a, CGlueInst, CGlueCtx> Sync for ProcessInstance<'cglue_a, CGlueInst, CGlueCtx>
where CGlueInst: Sync,

§

impl<'cglue_a, CGlueInst, CGlueCtx> Unpin for ProcessInstance<'cglue_a, CGlueInst, CGlueCtx>
where CGlueCtx: Unpin, CGlueInst: Unpin,

§

impl<'cglue_a, CGlueInst, CGlueCtx> UnwindSafe for ProcessInstance<'cglue_a, CGlueInst, CGlueCtx>
where CGlueCtx: UnwindSafe + RefUnwindSafe, CGlueInst: UnwindSafe + RefUnwindSafe,

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, F> From2<T> for F
where T: Into<F>,

source§

fn from2(other: T) -> F

source§

impl<T> GetWithMetadata for T

§

type ForSelf = WithMetadata_<T, T>

This is always WithMetadata_<Self, Self>
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

§

impl<S> ROExtAcc for S

§

fn f_get<F>(&self, offset: FieldOffset<S, F, Aligned>) -> &F

Gets a reference to a field, determined by offset. Read more
§

fn f_get_mut<F>(&mut self, offset: FieldOffset<S, F, Aligned>) -> &mut F

Gets a muatble reference to a field, determined by offset. Read more
§

fn f_get_ptr<F, A>(&self, offset: FieldOffset<S, F, A>) -> *const F

Gets a const pointer to a field, the field is determined by offset. Read more
§

fn f_get_mut_ptr<F, A>(&mut self, offset: FieldOffset<S, F, A>) -> *mut F

Gets a mutable pointer to a field, determined by offset. Read more
§

impl<S> ROExtOps<Aligned> for S

§

fn f_replace<F>(&mut self, offset: FieldOffset<S, F, Aligned>, value: F) -> F

Replaces a field (determined by offset) with value, returning the previous value of the field. Read more
§

fn f_swap<F>(&mut self, offset: FieldOffset<S, F, Aligned>, right: &mut S)

Swaps a field (determined by offset) with the same field in right. Read more
§

fn f_get_copy<F>(&self, offset: FieldOffset<S, F, Aligned>) -> F
where F: Copy,

Gets a copy of a field (determined by offset). The field is determined by offset. Read more
§

impl<S> ROExtOps<Unaligned> for S

§

fn f_replace<F>(&mut self, offset: FieldOffset<S, F, Unaligned>, value: F) -> F

Replaces a field (determined by offset) with value, returning the previous value of the field. Read more
§

fn f_swap<F>(&mut self, offset: FieldOffset<S, F, Unaligned>, right: &mut S)

Swaps a field (determined by offset) with the same field in right. Read more
§

fn f_get_copy<F>(&self, offset: FieldOffset<S, F, Unaligned>) -> F
where F: Copy,

Gets a copy of a field (determined by offset). The field is determined by offset. Read more
§

impl<T> SelfOps for T
where T: ?Sized,

§

fn eq_id(&self, other: &Self) -> bool

Compares the address of self with the address of other. Read more
§

fn piped<F, U>(self, f: F) -> U
where F: FnOnce(Self) -> U, Self: Sized,

Emulates the pipeline operator, allowing method syntax in more places. Read more
§

fn piped_ref<'a, F, U>(&'a self, f: F) -> U
where F: FnOnce(&'a Self) -> U,

The same as piped except that the function takes &Self Useful for functions that take &Self instead of Self. Read more
§

fn piped_mut<'a, F, U>(&'a mut self, f: F) -> U
where F: FnOnce(&'a mut Self) -> U,

The same as piped, except that the function takes &mut Self. Useful for functions that take &mut Self instead of Self.
§

fn mutated<F>(self, f: F) -> Self
where F: FnOnce(&mut Self), Self: Sized,

Mutates self using a closure taking self by mutable reference, passing it along the method chain. Read more
§

fn observe<F>(self, f: F) -> Self
where F: FnOnce(&Self), Self: Sized,

Observes the value of self, passing it along unmodified. Useful in long method chains. Read more
§

fn into_<T>(self) -> T
where Self: Into<T>,

Performs a conversion with Into. using the turbofish .into_::<_>() syntax. Read more
§

fn as_ref_<T>(&self) -> &T
where Self: AsRef<T>, T: ?Sized,

Performs a reference to reference conversion with AsRef, using the turbofish .as_ref_::<_>() syntax. Read more
§

fn as_mut_<T>(&mut self) -> &mut T
where Self: AsMut<T>, T: ?Sized,

Performs a mutable reference to mutable reference conversion with AsMut, using the turbofish .as_mut_::<_>() syntax. Read more
§

fn drop_(self)
where Self: Sized,

Drops self using method notation. Alternative to std::mem::drop. Read more
source§

impl<This> TransmuteElement for This
where This: ?Sized,

source§

unsafe fn transmute_element<T>(self) -> Self::TransmutedPtr
where Self: CanTransmuteElement<T>,

Transmutes the element type of this pointer.. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<T> TypeIdentity for T
where T: ?Sized,

§

type Type = T

This is always Self.
§

fn into_type(self) -> Self::Type
where Self: Sized, Self::Type: Sized,

Converts a value back to the original type.
§

fn as_type(&self) -> &Self::Type

Converts a reference back to the original type.
§

fn as_type_mut(&mut self) -> &mut Self::Type

Converts a mutable reference back to the original type.
§

fn into_type_box(self: Box<Self>) -> Box<Self::Type>

Converts a box back to the original type.
§

fn into_type_arc(this: Arc<Self>) -> Arc<Self::Type>

Converts an Arc back to the original type. Read more
§

fn into_type_rc(this: Rc<Self>) -> Rc<Self::Type>

Converts an Rc back to the original type. Read more
§

fn from_type(this: Self::Type) -> Self
where Self: Sized, Self::Type: Sized,

Converts a value back to the original type.
§

fn from_type_ref(this: &Self::Type) -> &Self

Converts a reference back to the original type.
§

fn from_type_mut(this: &mut Self::Type) -> &mut Self

Converts a mutable reference back to the original type.
§

fn from_type_box(this: Box<Self::Type>) -> Box<Self>

Converts a box back to the original type.
§

fn from_type_arc(this: Arc<Self::Type>) -> Arc<Self>

Converts an Arc back to the original type.
§

fn from_type_rc(this: Rc<Self::Type>) -> Rc<Self>

Converts an Rc back to the original type.
source§

impl<T> GenericTypeBounds for T
where T: StableAbi,

source§

impl<T> Opaque for T
where T: Opaquable<OpaqueTarget = T>,