Module abi_stable::library
source · Expand description
Traits and types related to loading an abi_stable dynamic library, as well as functions/modules within.
Loading the root module
When you use the RootModule
::load_from*
associated functions,
the root module of a library is loaded in this order:
- A
RawLibrary
is loaded (The library is leaked so that the root module loader can do anything incompatible with library unloading.) - An
AbiHeaderRef
handle to the static that contains the root module is obtained. - The
AbiHeaderRef
checks that the abi_stable version used by that library is compatible with the loader’s, upgrading to a&'static LibHeader
on success. - The
LibHeader
checks that the layout of the types in the root module (and everything it references) are compatible with the loader’s - The root module
is loaded using the function from the loaded library
that was annotated with
#[export_root_module]
. RootModule::initialize
is called on the root module.
All steps can return errors.
Re-exports
pub use self::c_abi_testing::CAbiTestingFns;
pub use self::c_abi_testing::C_ABI_TESTING_FNS;
Modules
- This module runs tests on the C abi as defined by Rust, to detect whether Rust changed how it deals with zero-sized types.
- Utilities for use while developing dynamic libraries.
Structs
- Represents the abi_stable version used by a compiled dynamic library, which if incompatible would produce a
LibraryError::InvalidAbiHeader
- A handle to the
AbiHeader
of a library. - Used to check the layout of modules returned by module-loading functions exported by dynamic libraries.
- A handle to any dynamically loaded library, not necessarily ones that export abi_stable compatible modules.
- All the constants of the
RootModule
trait for some erased type.
Enums
- Tells
LibHeader::from_constructor
whether to include the layout of the root module for checking it when loaded. - Whether the ABI of a root module is checked.
- All the possible errors that could happen when loading a library, or a module.
- The path a library is loaded from.
- What naming convention to expect when loading a library from a directory.
- The errors that a
#[export_root_module]
function can return.
Constants
- The name of the
static
that contains theLibHeader
of an abi_stable library. - A
NulStr
equivalent ofROOT_MODULE_LOADER_NAME
. - A nul-terminated equivalent of
ROOT_MODULE_LOADER_NAME
.
Traits
- For converting the return value of a
#[export_root_module]
function to aResult<_, RootModuleError>
. - The root module of a dynamic library, which may contain other modules,function pointers,and static references.
Functions
- Gets the AbiHeaderRef of the library at the path.
- Gets the AbiHeaderRef of a library.
- Gets the LibHeader of the library at the path.
- Gets the LibHeader of a library.
Type Aliases
- The return type of the function that the
#[export_root_module]
attribute outputs.