[][src]Trait abi_stable::abi_stability::extra_checks::ForExtraChecksImplementor

pub trait ForExtraChecksImplementor: StableAbi + ExtraChecks {
    pub fn downcast_with_layout<F, R, E>(
        layout_containing_other: &'static TypeLayout,
        checker: TypeCheckerMut<'_>,
        f: F
    ) -> RResult<R, ExtraChecksError>
    where
        Self: 'static,
        F: FnOnce(&Self, TypeCheckerMut<'_>) -> Result<R, E>,
        E: Send + Sync + ErrorTrait + 'static
, { ... }
pub fn downcast_with_object<F, R, E>(
        other: ExtraChecksRef<'_>,
        checker: TypeCheckerMut<'_>,
        f: F
    ) -> RResult<R, ExtraChecksError>
    where
        F: FnOnce(&Self, TypeCheckerMut<'_>) -> Result<R, E>,
        E: Send + Sync + ErrorTrait + 'static
, { ... } }

An extension trait for ExtraChecks implementors.

Provided methods

pub fn downcast_with_layout<F, R, E>(
    layout_containing_other: &'static TypeLayout,
    checker: TypeCheckerMut<'_>,
    f: F
) -> RResult<R, ExtraChecksError> where
    Self: 'static,
    F: FnOnce(&Self, TypeCheckerMut<'_>) -> Result<R, E>,
    E: Send + Sync + ErrorTrait + 'static, 
[src]

Accesses the ExtraChecks field in layout_containing_other, unerased into Self.

If the closure returns an ExtraChecksError,it'll be returned unmodified and unwrapped.

Returns

  • ROk(_): If other was unerased to Self,and f did not return any errors.

  • RErr(ExtraChecksError::NoneExtraChecks): Iflayout_containing_other does not contain an ExtraChecks trait object.

  • RErr(ExtraChecksError::TypeChecker): If there is an error while type checking.

  • RErr(ExtraChecksError::ExtraChecks(_)): If there is an custom error within the function.

pub fn downcast_with_object<F, R, E>(
    other: ExtraChecksRef<'_>,
    checker: TypeCheckerMut<'_>,
    f: F
) -> RResult<R, ExtraChecksError> where
    F: FnOnce(&Self, TypeCheckerMut<'_>) -> Result<R, E>,
    E: Send + Sync + ErrorTrait + 'static, 
[src]

Allows one to access other unerased into Self.

If the closure returns an ExtraChecksError,it'll be returned unmodified and unwrapped.

Returns

  • ROk(_): If other could be unerased to Self,and f did not return any errors.

  • RErr(ExtraChecksError::TypeChecker): If there is an error while type checking.

  • RErr(ExtraChecksError::ExtraChecks(_)): If there is an custom error within the function.

Loading content...

Implementors

impl<This: ?Sized> ForExtraChecksImplementor for This where
    This: StableAbi + ExtraChecks
[src]

Loading content...