pub unsafe trait TypeChecker: Send + Sync + 'static {
    // Required methods
    fn check_compatibility(
        &mut self,
        interface: &'static TypeLayout,
        implementation: &'static TypeLayout
    ) -> RResult<(), ExtraChecksError>;
    fn local_check_compatibility(
        &mut self,
        interface: &'static TypeLayout,
        implementation: &'static TypeLayout
    ) -> RResult<(), ExtraChecksError>;
}
Expand description

This checks that the layout of types coming from dynamic libraries are compatible with those of the binary/dynlib that loads them.

Safety

This trait must not be implemented outside of abi_stable.

Required Methods§

source

fn check_compatibility( &mut self, interface: &'static TypeLayout, implementation: &'static TypeLayout ) -> RResult<(), ExtraChecksError>

Checks that ìnterface is compatible with implementation.

This is equivalent to check_layout_compatibility, except that it can also be called re-entrantly (while check_layout_compatibility cannot be called re-entrantly)

Errors

When calling the implementation of this trait used in check_layout_compatibility, the errors detected in this method are always propagated by the free function, to prevent the propagation of errors call the local_check_compatibility method.

source

fn local_check_compatibility( &mut self, interface: &'static TypeLayout, implementation: &'static TypeLayout ) -> RResult<(), ExtraChecksError>

Checks that ìnterface is compatible with implementation.

This is equivalent to the check_compatibility method, except that it does not propagate errors automatically, they must be returned as part of the error of the ExtraChecks that calls this.

Implementors§