Module 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:

  1. A RawLibrary is loaded (The library is leaked so that the root module loader can do anything incompatible with library unloading.)
  2. An AbiHeaderRef handle to the static that contains the root module is obtained.
  3. 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.
  4. The LibHeader checks that the layout of the types in the root module (and everything it references) are compatible with the loader’s
  5. The root module is loaded using the function from the loaded library that was annotated with #[export_root_module].
  6. 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§

c_abi_testing
This module runs tests on the C abi as defined by Rust, to detect whether Rust changed how it deals with zero-sized types.
development_utils
Utilities for use while developing dynamic libraries.

Structs§

AbiHeader
Represents the abi_stable version used by a compiled dynamic library, which if incompatible would produce a LibraryError::InvalidAbiHeader
AbiHeaderRef
A handle to the AbiHeader of a library.
LibHeader
Used to check the layout of modules returned by module-loading functions exported by dynamic libraries.
RawLibrary
A handle to any dynamically loaded library, not necessarily ones that export abi_stable compatible modules.
RootModuleConsts
All the constants of the RootModule trait for some erased type.

Enums§

CheckTypeLayout
Tells LibHeader::from_constructor whether to include the layout of the root module for checking it when loaded.
IsLayoutChecked
Whether the ABI of a root module is checked.
LibraryError
All the possible errors that could happen when loading a library, or a module.
LibraryPath
The path a library is loaded from.
LibrarySuffix
What naming convention to expect when loading a library from a directory.
RootModuleError
The errors that a #[export_root_module] function can return.

Constants§

ROOT_MODULE_LOADER_NAME
The name of the static that contains the LibHeader of an abi_stable library.
ROOT_MODULE_LOADER_NAME_NULSTR
A NulStr equivalent of ROOT_MODULE_LOADER_NAME.
ROOT_MODULE_LOADER_NAME_WITH_NUL
A nul-terminated equivalent of ROOT_MODULE_LOADER_NAME.

Traits§

IntoRootModuleResult
For converting the return value of a #[export_root_module] function to a Result<_, RootModuleError>.
RootModule
The root module of a dynamic library, which may contain other modules,function pointers,and static references.

Functions§

abi_header_from_path
Gets the AbiHeaderRef of the library at the path.
abi_header_from_raw_library
Gets the AbiHeaderRef of a library.
lib_header_from_path
Gets the LibHeader of the library at the path.
lib_header_from_raw_library
Gets the LibHeader of a library.

Type Aliases§

RootModuleResult
The return type of the function that the #[export_root_module] attribute outputs.