pub struct MultiVersionLinker { /* private fields */ }Expand description
Per-major Linker cache.
Construct once at host startup (e.g., alongside the Engine),
then call Self::linker_for on every plugin load.
Implementations§
Source§impl MultiVersionLinker
impl MultiVersionLinker
Sourcepub fn linker_for(
&self,
abi: &AbiRange,
effective_caps: &CapabilitySet,
) -> Result<Arc<Linker<HostState>>, WasmError>
pub fn linker_for( &self, abi: &AbiRange, effective_caps: &CapabilitySet, ) -> Result<Arc<Linker<HostState>>, WasmError>
Resolve and return the Linker matching the plugin’s declared
ABI range and effective capability set.
Probes SUPPORTED_MAJORS in order; the first major whose
abi.matches(major) is true is selected. The corresponding
build_scalar_linker_vN is invoked on cache miss; subsequent
calls with the same (major, caps) return the cached Arc.
§Errors
Returns WasmError::AbiUnsupported when no supported major
matches the plugin’s abi range.
Sourcepub fn clear_cache(&self)
pub fn clear_cache(&self)
Reset the cache. Intended for tests; production callers don’t need to clear because cached linkers are immutable after build.
Trait Implementations§
Auto Trait Implementations§
impl !Freeze for MultiVersionLinker
impl !RefUnwindSafe for MultiVersionLinker
impl !UnwindSafe for MultiVersionLinker
impl Send for MultiVersionLinker
impl Sync for MultiVersionLinker
impl Unpin for MultiVersionLinker
impl UnsafeUnpin for MultiVersionLinker
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> GetSetFdFlags for T
impl<T> GetSetFdFlags for T
Source§fn get_fd_flags(&self) -> Result<FdFlags, Error>where
T: AsFilelike,
fn get_fd_flags(&self) -> Result<FdFlags, Error>where
T: AsFilelike,
Query the “status” flags for the
self file descriptor.Source§fn new_set_fd_flags(&self, fd_flags: FdFlags) -> Result<SetFdFlags<T>, Error>where
T: AsFilelike,
fn new_set_fd_flags(&self, fd_flags: FdFlags) -> Result<SetFdFlags<T>, Error>where
T: AsFilelike,
Source§fn set_fd_flags(&mut self, set_fd_flags: SetFdFlags<T>) -> Result<(), Error>where
T: Sized + AsFilelike,
fn set_fd_flags(&mut self, set_fd_flags: SetFdFlags<T>) -> Result<(), Error>where
T: Sized + AsFilelike,
Set the “status” flags for the
self file descriptor. Read moreSource§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more