pub trait ModuleMiddleware: Debug + Send + Sync {
// Required method
fn generate_function_middleware(
&self,
local_function_index: LocalFunctionIndex,
) -> Box<dyn FunctionMiddleware>;
// Provided method
fn transform_module_info(
&self,
_: &mut ModuleInfo,
) -> Result<(), MiddlewareError> { ... }
}
Expand description
A shared builder for function middlewares.
Required Methods§
sourcefn generate_function_middleware(
&self,
local_function_index: LocalFunctionIndex,
) -> Box<dyn FunctionMiddleware>
fn generate_function_middleware( &self, local_function_index: LocalFunctionIndex, ) -> Box<dyn FunctionMiddleware>
Generates a FunctionMiddleware
for a given function.
Here we generate a separate object for each function instead of executing directly on per-function operators,
in order to enable concurrent middleware application. Takes immutable &self
because this function can be called
concurrently from multiple compilation threads.
Provided Methods§
sourcefn transform_module_info(
&self,
_: &mut ModuleInfo,
) -> Result<(), MiddlewareError>
fn transform_module_info( &self, _: &mut ModuleInfo, ) -> Result<(), MiddlewareError>
Transforms a ModuleInfo
struct in-place. This is called before application on functions begins.