pub struct FuncEnvironment<'module_environment> {
Show 28 fields target_config: TargetFrontendConfig, module: &'module_environment ModuleInfo, type_stack: Vec<Type>, signatures: &'module_environment PrimaryMap<SignatureIndex, Signature>, heaps: PrimaryMap<Heap, HeapData>, vmctx: Option<GlobalValue>, memory32_size_sig: Option<SigRef>, table_size_sig: Option<SigRef>, memory_grow_sig: Option<SigRef>, table_grow_sig: Option<SigRef>, table_copy_sig: Option<SigRef>, table_init_sig: Option<SigRef>, elem_drop_sig: Option<SigRef>, memory_copy_sig: Option<SigRef>, memory_fill_sig: Option<SigRef>, memory_init_sig: Option<SigRef>, data_drop_sig: Option<SigRef>, table_get_sig: Option<SigRef>, table_set_sig: Option<SigRef>, func_ref_sig: Option<SigRef>, table_fill_sig: Option<SigRef>, memory32_atomic_wait32_sig: Option<SigRef>, memory32_atomic_wait64_sig: Option<SigRef>, memory32_atomic_notify_sig: Option<SigRef>, offsets: VMOffsets, memory_styles: &'module_environment PrimaryMap<MemoryIndex, MemoryStyle>, tables: SecondaryMap<TableIndex, Option<TableData>>, table_styles: &'module_environment PrimaryMap<TableIndex, TableStyle>,
}
Expand description

The FuncEnvironment implementation for use by the ModuleEnvironment.

Fields§

§target_config: TargetFrontendConfig

Target-specified configuration.

§module: &'module_environment ModuleInfo

The module-level environment which this function-level environment belongs to.

§type_stack: Vec<Type>

A stack tracking the type of local variables.

§signatures: &'module_environment PrimaryMap<SignatureIndex, Signature>

The module function signatures

§heaps: PrimaryMap<Heap, HeapData>

Heaps implementing WebAssembly linear memories.

§vmctx: Option<GlobalValue>

The Cranelift global holding the vmctx address.

§memory32_size_sig: Option<SigRef>

The external function signature for implementing wasm’s memory.size for locally-defined 32-bit memories.

§table_size_sig: Option<SigRef>

The external function signature for implementing wasm’s table.size for locally-defined tables.

§memory_grow_sig: Option<SigRef>

The external function signature for implementing wasm’s memory.grow for locally-defined memories.

§table_grow_sig: Option<SigRef>

The external function signature for implementing wasm’s table.grow for locally-defined tables.

§table_copy_sig: Option<SigRef>

The external function signature for implementing wasm’s table.copy (it’s the same for both local and imported tables).

§table_init_sig: Option<SigRef>

The external function signature for implementing wasm’s table.init.

§elem_drop_sig: Option<SigRef>

The external function signature for implementing wasm’s elem.drop.

§memory_copy_sig: Option<SigRef>

The external function signature for implementing wasm’s memory.copy (it’s the same for both local and imported memories).

§memory_fill_sig: Option<SigRef>

The external function signature for implementing wasm’s memory.fill (it’s the same for both local and imported memories).

§memory_init_sig: Option<SigRef>

The external function signature for implementing wasm’s memory.init.

§data_drop_sig: Option<SigRef>

The external function signature for implementing wasm’s data.drop.

§table_get_sig: Option<SigRef>

The external function signature for implementing wasm’s table.get.

§table_set_sig: Option<SigRef>

The external function signature for implementing wasm’s table.set.

§func_ref_sig: Option<SigRef>

The external function signature for implementing wasm’s func.ref.

§table_fill_sig: Option<SigRef>

The external function signature for implementing wasm’s table.fill.

§memory32_atomic_wait32_sig: Option<SigRef>

The external function signature for implementing wasm’s memory32.atomic.wait32.

§memory32_atomic_wait64_sig: Option<SigRef>

The external function signature for implementing wasm’s memory32.atomic.wait64.

§memory32_atomic_notify_sig: Option<SigRef>

The external function signature for implementing wasm’s memory32.atomic.notify.

§offsets: VMOffsets

Offsets to struct fields accessed by JIT code.

§memory_styles: &'module_environment PrimaryMap<MemoryIndex, MemoryStyle>

The memory styles

§tables: SecondaryMap<TableIndex, Option<TableData>>

Cranelift tables we have created to implement Wasm tables.

§table_styles: &'module_environment PrimaryMap<TableIndex, TableStyle>

Implementations§

source§

impl<'module_environment> FuncEnvironment<'module_environment>

source

pub fn new( target_config: TargetFrontendConfig, module: &'module_environment ModuleInfo, signatures: &'module_environment PrimaryMap<SignatureIndex, Signature>, memory_styles: &'module_environment PrimaryMap<MemoryIndex, MemoryStyle>, table_styles: &'module_environment PrimaryMap<TableIndex, TableStyle>, ) -> Self

source

fn pointer_type(&self) -> Type

source

fn ensure_table_exists(&mut self, func: &mut Function, index: TableIndex)

source

fn vmctx(&mut self, func: &mut Function) -> GlobalValue

source

fn get_table_fill_sig(&mut self, func: &mut Function) -> SigRef

source

fn get_table_fill_func( &mut self, func: &mut Function, table_index: TableIndex, ) -> (SigRef, usize, VMBuiltinFunctionIndex)

source

fn get_func_ref_sig(&mut self, func: &mut Function) -> SigRef

source

fn get_func_ref_func( &mut self, func: &mut Function, function_index: FunctionIndex, ) -> (SigRef, usize, VMBuiltinFunctionIndex)

source

fn get_table_get_sig(&mut self, func: &mut Function) -> SigRef

source

fn get_table_get_func( &mut self, func: &mut Function, table_index: TableIndex, ) -> (SigRef, usize, VMBuiltinFunctionIndex)

source

fn get_table_set_sig(&mut self, func: &mut Function) -> SigRef

source

fn get_table_set_func( &mut self, func: &mut Function, table_index: TableIndex, ) -> (SigRef, usize, VMBuiltinFunctionIndex)

source

fn get_table_grow_sig(&mut self, func: &mut Function) -> SigRef

source

fn get_table_grow_func( &mut self, func: &mut Function, index: TableIndex, ) -> (SigRef, usize, VMBuiltinFunctionIndex)

Return the table.grow function signature to call for the given index, along with the translated index value to pass to it and its index in VMBuiltinFunctionsArray.

source

fn get_memory_grow_sig(&mut self, func: &mut Function) -> SigRef

source

fn get_memory_grow_func( &mut self, func: &mut Function, index: MemoryIndex, ) -> (SigRef, usize, VMBuiltinFunctionIndex)

Return the memory.grow function signature to call for the given index, along with the translated index value to pass to it and its index in VMBuiltinFunctionsArray.

source

fn get_table_size_sig(&mut self, func: &mut Function) -> SigRef

source

fn get_table_size_func( &mut self, func: &mut Function, index: TableIndex, ) -> (SigRef, usize, VMBuiltinFunctionIndex)

Return the memory.size function signature to call for the given index, along with the translated index value to pass to it and its index in VMBuiltinFunctionsArray.

source

fn get_memory32_size_sig(&mut self, func: &mut Function) -> SigRef

source

fn get_memory_size_func( &mut self, func: &mut Function, index: MemoryIndex, ) -> (SigRef, usize, VMBuiltinFunctionIndex)

Return the memory.size function signature to call for the given index, along with the translated index value to pass to it and its index in VMBuiltinFunctionsArray.

source

fn get_table_copy_sig(&mut self, func: &mut Function) -> SigRef

source

fn get_table_copy_func( &mut self, func: &mut Function, dst_table_index: TableIndex, src_table_index: TableIndex, ) -> (SigRef, usize, usize, VMBuiltinFunctionIndex)

source

fn get_table_init_sig(&mut self, func: &mut Function) -> SigRef

source

fn get_table_init_func( &mut self, func: &mut Function, table_index: TableIndex, ) -> (SigRef, usize, VMBuiltinFunctionIndex)

source

fn get_elem_drop_sig(&mut self, func: &mut Function) -> SigRef

source

fn get_elem_drop_func( &mut self, func: &mut Function, ) -> (SigRef, VMBuiltinFunctionIndex)

source

fn get_memory_copy_sig(&mut self, func: &mut Function) -> SigRef

source

fn get_memory_copy_func( &mut self, func: &mut Function, memory_index: MemoryIndex, ) -> (SigRef, usize, VMBuiltinFunctionIndex)

source

fn get_memory_fill_sig(&mut self, func: &mut Function) -> SigRef

source

fn get_memory_fill_func( &mut self, func: &mut Function, memory_index: MemoryIndex, ) -> (SigRef, usize, VMBuiltinFunctionIndex)

source

fn get_memory_init_sig(&mut self, func: &mut Function) -> SigRef

source

fn get_memory_init_func( &mut self, func: &mut Function, ) -> (SigRef, VMBuiltinFunctionIndex)

source

fn get_data_drop_sig(&mut self, func: &mut Function) -> SigRef

source

fn get_data_drop_func( &mut self, func: &mut Function, ) -> (SigRef, VMBuiltinFunctionIndex)

source

fn get_memory32_atomic_wait32_sig(&mut self, func: &mut Function) -> SigRef

source

fn get_memory_atomic_wait32_func( &mut self, func: &mut Function, index: MemoryIndex, ) -> (SigRef, usize, VMBuiltinFunctionIndex)

Return the memory.atomic.wait32 function signature to call for the given index, along with the translated index value to pass to it and its index in VMBuiltinFunctionsArray.

source

fn get_memory32_atomic_wait64_sig(&mut self, func: &mut Function) -> SigRef

source

fn get_memory_atomic_wait64_func( &mut self, func: &mut Function, index: MemoryIndex, ) -> (SigRef, usize, VMBuiltinFunctionIndex)

Return the memory.atomic.wait64 function signature to call for the given index, along with the translated index value to pass to it and its index in VMBuiltinFunctionsArray.

source

fn get_memory32_atomic_notify_sig(&mut self, func: &mut Function) -> SigRef

source

fn get_memory_atomic_notify_func( &mut self, func: &mut Function, index: MemoryIndex, ) -> (SigRef, usize, VMBuiltinFunctionIndex)

Return the memory.atomic.notify function signature to call for the given index, along with the translated index value to pass to it and its index in VMBuiltinFunctionsArray.

source

fn translate_load_builtin_function_address( &mut self, pos: &mut FuncCursor<'_>, callee_func_idx: VMBuiltinFunctionIndex, ) -> (Value, Value)

Translates load of builtin function and returns a pair of values vmctx and address of the loaded function.

source

fn get_or_init_funcref_table_elem( &mut self, builder: &mut FunctionBuilder<'_>, table_index: TableIndex, index: Value, ) -> Value

Trait Implementations§

source§

impl<'module_environment> FuncEnvironment for FuncEnvironment<'module_environment>

source§

fn is_wasm_parameter(&self, _signature: &Signature, index: usize) -> bool

Is the given parameter of the given function a wasm-level parameter, as opposed to a hidden parameter added for use by the implementation?
source§

fn translate_table_grow( &mut self, pos: FuncCursor<'_>, table_index: TableIndex, delta: Value, init_value: Value, ) -> WasmResult<Value>

Translate a table.grow WebAssembly instruction.
source§

fn translate_table_get( &mut self, builder: &mut FunctionBuilder<'_>, table_index: TableIndex, index: Value, ) -> WasmResult<Value>

Translate a table.get WebAssembly instruction.
source§

fn translate_table_set( &mut self, builder: &mut FunctionBuilder<'_>, table_index: TableIndex, value: Value, index: Value, ) -> WasmResult<()>

Translate a table.set WebAssembly instruction.
source§

fn translate_table_fill( &mut self, pos: FuncCursor<'_>, table_index: TableIndex, dst: Value, val: Value, len: Value, ) -> WasmResult<()>

Translate a table.fill WebAssembly instruction.
source§

fn translate_ref_null( &mut self, pos: FuncCursor<'_>, ty: HeapType, ) -> WasmResult<Value>

Translate a ref.null T WebAssembly instruction. Read more
source§

fn translate_ref_is_null( &mut self, pos: FuncCursor<'_>, value: Value, ) -> WasmResult<Value>

Translate a ref.is_null WebAssembly instruction. Read more
source§

fn translate_ref_func( &mut self, pos: FuncCursor<'_>, func_index: FunctionIndex, ) -> WasmResult<Value>

Translate a ref.func WebAssembly instruction.
source§

fn translate_custom_global_get( &mut self, _pos: FuncCursor<'_>, _index: GlobalIndex, ) -> WasmResult<Value>

Translate a global.get WebAssembly instruction at pos for a global that is custom.
source§

fn translate_custom_global_set( &mut self, _pos: FuncCursor<'_>, _index: GlobalIndex, _value: Value, ) -> WasmResult<()>

Translate a global.set WebAssembly instruction at pos for a global that is custom.
source§

fn make_heap( &mut self, func: &mut Function, index: MemoryIndex, ) -> WasmResult<Heap>

Set up the necessary preamble definitions in func to access the linear memory identified by index. Read more
source§

fn make_global( &mut self, func: &mut Function, index: GlobalIndex, ) -> WasmResult<GlobalVariable>

Set up the necessary preamble definitions in func to access the global variable identified by index. Read more
source§

fn make_indirect_sig( &mut self, func: &mut Function, index: SignatureIndex, ) -> WasmResult<SigRef>

Set up a signature definition in the preamble of func that can be used for an indirect call with signature index. Read more
source§

fn make_direct_func( &mut self, func: &mut Function, index: FunctionIndex, ) -> WasmResult<FuncRef>

Set up an external function definition in the preamble of func that can be used to directly call the function index. Read more
source§

fn translate_call_indirect( &mut self, builder: &mut FunctionBuilder<'_>, table_index: TableIndex, sig_index: SignatureIndex, sig_ref: SigRef, callee: Value, call_args: &[Value], ) -> WasmResult<Inst>

Translate a call_indirect WebAssembly instruction at pos. Read more
source§

fn translate_call( &mut self, builder: &mut FunctionBuilder<'_>, callee_index: FunctionIndex, callee: FuncRef, call_args: &[Value], ) -> WasmResult<Inst>

Translate a call WebAssembly instruction at pos. Read more
source§

fn translate_memory_grow( &mut self, pos: FuncCursor<'_>, index: MemoryIndex, _heap: Heap, val: Value, ) -> WasmResult<Value>

Translate a memory.grow WebAssembly instruction. Read more
source§

fn translate_memory_size( &mut self, pos: FuncCursor<'_>, index: MemoryIndex, _heap: Heap, ) -> WasmResult<Value>

Translates a memory.size WebAssembly instruction. Read more
source§

fn translate_memory_copy( &mut self, pos: FuncCursor<'_>, src_index: MemoryIndex, _src_heap: Heap, _dst_index: MemoryIndex, _dst_heap: Heap, dst: Value, src: Value, len: Value, ) -> WasmResult<()>

Translate a memory.copy WebAssembly instruction. Read more
source§

fn translate_memory_fill( &mut self, pos: FuncCursor<'_>, memory_index: MemoryIndex, _heap: Heap, dst: Value, val: Value, len: Value, ) -> WasmResult<()>

Translate a memory.fill WebAssembly instruction. Read more
source§

fn translate_memory_init( &mut self, pos: FuncCursor<'_>, memory_index: MemoryIndex, _heap: Heap, seg_index: u32, dst: Value, src: Value, len: Value, ) -> WasmResult<()>

Translate a memory.init WebAssembly instruction. Read more
source§

fn translate_data_drop( &mut self, pos: FuncCursor<'_>, seg_index: u32, ) -> WasmResult<()>

Translate a data.drop WebAssembly instruction.
source§

fn translate_table_size( &mut self, pos: FuncCursor<'_>, table_index: TableIndex, ) -> WasmResult<Value>

Translate a table.size WebAssembly instruction.
source§

fn translate_table_copy( &mut self, pos: FuncCursor<'_>, dst_table_index: TableIndex, src_table_index: TableIndex, dst: Value, src: Value, len: Value, ) -> WasmResult<()>

Translate a table.copy WebAssembly instruction.
source§

fn translate_table_init( &mut self, pos: FuncCursor<'_>, seg_index: u32, table_index: TableIndex, dst: Value, src: Value, len: Value, ) -> WasmResult<()>

Translate a table.init WebAssembly instruction.
source§

fn translate_elem_drop( &mut self, pos: FuncCursor<'_>, elem_index: u32, ) -> WasmResult<()>

Translate a elem.drop WebAssembly instruction.
source§

fn translate_atomic_wait( &mut self, pos: FuncCursor<'_>, index: MemoryIndex, _heap: Heap, addr: Value, expected: Value, timeout: Value, ) -> WasmResult<Value>

Translate an i32.atomic.wait or i64.atomic.wait WebAssembly instruction. The index provided identifies the linear memory containing the value to wait on, and heap is the heap reference returned by make_heap for the same index. Whether the waited-on value is 32- or 64-bit can be determined by examining the type of expected, which must be only I32 or I64. Read more
source§

fn translate_atomic_notify( &mut self, pos: FuncCursor<'_>, index: MemoryIndex, _heap: Heap, addr: Value, count: Value, ) -> WasmResult<Value>

Translate an atomic.notify WebAssembly instruction. The index provided identifies the linear memory containing the value to wait on, and heap is the heap reference returned by make_heap for the same index. Read more
source§

fn get_global_type(&self, global_index: GlobalIndex) -> Option<WasmerType>

Get the type of the global at the given index.
source§

fn push_local_decl_on_stack(&mut self, ty: WasmerType)

Push a local declaration on to the stack to track the type of locals.
source§

fn push_params_on_stack(&mut self, function_index: LocalFunctionIndex)

Push locals for a the params of a function on to the stack.
source§

fn get_local_type(&self, local_index: u32) -> Option<WasmerType>

Get the type of the local at the given index.
source§

fn get_local_types(&self) -> &[WasmerType]

Get the types of all the current locals.
source§

fn get_function_type( &self, function_index: FunctionIndex, ) -> Option<&FunctionType>

Get the type of the local at the given index.
source§

fn get_function_sig(&self, sig_index: SignatureIndex) -> Option<&FunctionType>

Get the type of a function with the given signature index.
source§

fn heap_access_spectre_mitigation(&self) -> bool

Whether to enable Spectre mitigations for heap accesses.
source§

fn proof_carrying_code(&self) -> bool

Whether to add proof-carrying-code facts to verify memory accesses.
source§

fn heaps(&self) -> &PrimaryMap<Heap, HeapData>

Get the heaps for this function environment. Read more
source§

fn is_wasm_return(&self, signature: &Signature, index: usize) -> bool

Is the given return of the given function a wasm-level parameter, as opposed to a hidden parameter added for use by the implementation?
source§

fn return_mode(&self) -> ReturnMode

Should the code be structured to use a single fallthrough_return instruction at the end of the function body, rather than return instructions as needed? This is used by VMs to append custom epilogues.
source§

fn update_global( &mut self, _builder: &mut FunctionBuilder<'_>, _global_index: u32, _value: Value, )

Inserts code before updating a global.
source§

fn translate_loop_header(&mut self, _pos: FuncCursor<'_>) -> WasmResult<()>

Emit code at the beginning of every wasm loop. Read more
source§

fn before_translate_operator( &mut self, _op: &Operator<'_>, _builder: &mut FunctionBuilder<'_>, _state: &FuncTranslationState, ) -> WasmResult<()>

Optional callback for the FunctionEnvMutironment performing this translation to maintain internal state or prepare custom state for the operator to translate
source§

fn after_translate_operator( &mut self, _op: &Operator<'_>, _builder: &mut FunctionBuilder<'_>, _state: &FuncTranslationState, ) -> WasmResult<()>

Optional callback for the FunctionEnvMutironment performing this translation to maintain internal state or finalize custom state for the operator that was translated
source§

fn before_unconditionally_trapping_memory_access( &mut self, _builder: &mut FunctionBuilder<'_>, ) -> WasmResult<()>

Optional callback for the FuncEnvironment performing this translation to maintain, prepare, or finalize custom, internal state when we statically determine that a Wasm memory access will unconditionally trap, rendering the rest of the block unreachable. Called just before the unconditional trap is emitted.
source§

fn handle_before_return( &mut self, _retvals: &[Value], _builder: &mut FunctionBuilder<'_>, )

Inserts code before a function return.
source§

fn before_load( &mut self, _builder: &mut FunctionBuilder<'_>, _val_size: u8, _addr: Value, _offset: u64, )

Inserts code before a load.
source§

fn before_store( &mut self, _builder: &mut FunctionBuilder<'_>, _val_size: u8, _addr: Value, _offset: u64, )

Inserts code before a store.
source§

impl<'module_environment> TargetEnvironment for FuncEnvironment<'module_environment>

source§

fn target_config(&self) -> TargetFrontendConfig

Get the information needed to produce Cranelift IR for the given target.
source§

fn pointer_type(&self) -> Type

Get the Cranelift integer type to use for native pointers. Read more
source§

fn pointer_bytes(&self) -> u8

Get the size of a native pointer, in bytes.
source§

fn reference_type(&self) -> Type

Get the Cranelift reference type to use for native references. Read more

Auto Trait Implementations§

§

impl<'module_environment> Freeze for FuncEnvironment<'module_environment>

§

impl<'module_environment> RefUnwindSafe for FuncEnvironment<'module_environment>

§

impl<'module_environment> Send for FuncEnvironment<'module_environment>

§

impl<'module_environment> Sync for FuncEnvironment<'module_environment>

§

impl<'module_environment> Unpin for FuncEnvironment<'module_environment>

§

impl<'module_environment> UnwindSafe for FuncEnvironment<'module_environment>

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<T> ArchivePointee for T

§

type ArchivedMetadata = ()

The archived version of the pointer metadata for this type.
§

fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata

Converts some archived metadata to the pointer metadata for itself.
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> IntoEither for T

source§

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 more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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
§

impl<T> LayoutRaw for T

§

fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>

Returns the layout of the type.
§

impl<T> Pointable for T

§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
§

impl<T> Pointee for T

§

type Metadata = ()

The metadata type for pointers and references to this type.
source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<T> Upcastable for T
where T: Any + Send + Sync + 'static,

§

fn upcast_any_ref(&self) -> &(dyn Any + 'static)

upcast ref
§

fn upcast_any_mut(&mut self) -> &mut (dyn Any + 'static)

upcast mut ref
§

fn upcast_any_box(self: Box<T>) -> Box<dyn Any>

upcast boxed dyn
§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more