Struct cranelift_wasm::DummyFuncEnvironment
source · pub struct DummyFuncEnvironment<'dummy_environment> {
pub mod_info: &'dummy_environment DummyModuleInfo,
pub heaps: PrimaryMap<Heap, HeapData>,
/* private fields */
}Expand description
The FuncEnvironment implementation for use by the DummyEnvironment.
Fields§
§mod_info: &'dummy_environment DummyModuleInfoThis function environment’s module info.
heaps: PrimaryMap<Heap, HeapData>Heaps we have created to implement Wasm linear memories.
Implementations§
source§impl<'dummy_environment> DummyFuncEnvironment<'dummy_environment>
impl<'dummy_environment> DummyFuncEnvironment<'dummy_environment>
sourcepub fn new(
mod_info: &'dummy_environment DummyModuleInfo,
expected_reachability: Option<ExpectedReachability>
) -> Self
pub fn new( mod_info: &'dummy_environment DummyModuleInfo, expected_reachability: Option<ExpectedReachability> ) -> Self
Construct a new DummyFuncEnvironment.
Trait Implementations§
source§impl<'dummy_environment> FuncEnvironment for DummyFuncEnvironment<'dummy_environment>
impl<'dummy_environment> FuncEnvironment for DummyFuncEnvironment<'dummy_environment>
source§fn make_global(
&mut self,
func: &mut Function,
index: GlobalIndex
) -> WasmResult<GlobalVariable>
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 moresource§fn heaps(&self) -> &PrimaryMap<Heap, HeapData>
fn heaps(&self) -> &PrimaryMap<Heap, HeapData>
Get the heaps for this function environment. Read more
source§fn make_heap(
&mut self,
func: &mut Function,
_index: MemoryIndex
) -> WasmResult<Heap>
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 moresource§fn make_table(
&mut self,
func: &mut Function,
_index: TableIndex
) -> WasmResult<Table>
fn make_table( &mut self, func: &mut Function, _index: TableIndex ) -> WasmResult<Table>
Set up the necessary preamble definitions in
func to access the table identified
by index. Read moresource§fn make_indirect_sig(
&mut self,
func: &mut Function,
index: TypeIndex
) -> WasmResult<SigRef>
fn make_indirect_sig( &mut self, func: &mut Function, index: TypeIndex ) -> WasmResult<SigRef>
Set up a signature definition in the preamble of
func that can be used for an indirect
call with signature index. Read moresource§fn make_direct_func(
&mut self,
func: &mut Function,
index: FuncIndex
) -> WasmResult<FuncRef>
fn make_direct_func( &mut self, func: &mut Function, index: FuncIndex ) -> WasmResult<FuncRef>
Set up an external function definition in the preamble of
func that can be used to
directly call the function index. Read moresource§fn before_translate_operator(
&mut self,
_op: &Operator<'_>,
_builder: &mut FunctionBuilder<'_>,
state: &FuncTranslationState
) -> WasmResult<()>
fn before_translate_operator( &mut self, _op: &Operator<'_>, _builder: &mut FunctionBuilder<'_>, state: &FuncTranslationState ) -> WasmResult<()>
Optional callback for the
FunctionEnvironment performing this translation to maintain
internal state or prepare custom state for the operator to translatesource§fn after_translate_operator(
&mut self,
_op: &Operator<'_>,
_builder: &mut FunctionBuilder<'_>,
state: &FuncTranslationState
) -> WasmResult<()>
fn after_translate_operator( &mut self, _op: &Operator<'_>, _builder: &mut FunctionBuilder<'_>, state: &FuncTranslationState ) -> WasmResult<()>
Optional callback for the
FunctionEnvironment performing this translation to maintain
internal state or finalize custom state for the operator that was translatedsource§fn after_translate_function(
&mut self,
_builder: &mut FunctionBuilder<'_>,
_state: &FuncTranslationState
) -> WasmResult<()>
fn after_translate_function( &mut self, _builder: &mut FunctionBuilder<'_>, _state: &FuncTranslationState ) -> WasmResult<()>
Optional callback for the
FunctionEnvironment performing this translation to perform work
after the function body is translated.source§fn translate_call_indirect(
&mut self,
builder: &mut FunctionBuilder<'_>,
_table_index: TableIndex,
_table: Table,
_sig_index: TypeIndex,
sig_ref: SigRef,
callee: Value,
call_args: &[Value]
) -> WasmResult<Inst>
fn translate_call_indirect( &mut self, builder: &mut FunctionBuilder<'_>, _table_index: TableIndex, _table: Table, _sig_index: TypeIndex, sig_ref: SigRef, callee: Value, call_args: &[Value] ) -> WasmResult<Inst>
source§fn translate_return_call_indirect(
&mut self,
_builder: &mut FunctionBuilder<'_>,
_table_index: TableIndex,
_table: Table,
_sig_index: TypeIndex,
_sig_ref: SigRef,
_callee: Value,
_call_args: &[Value]
) -> WasmResult<()>
fn translate_return_call_indirect( &mut self, _builder: &mut FunctionBuilder<'_>, _table_index: TableIndex, _table: Table, _sig_index: TypeIndex, _sig_ref: SigRef, _callee: Value, _call_args: &[Value] ) -> WasmResult<()>
Translate a
return_call_indirect WebAssembly instruction at the
builder’s current position. Read moresource§fn translate_return_call_ref(
&mut self,
_builder: &mut FunctionBuilder<'_>,
_sig_ref: SigRef,
_callee: Value,
_call_args: &[Value]
) -> WasmResult<()>
fn translate_return_call_ref( &mut self, _builder: &mut FunctionBuilder<'_>, _sig_ref: SigRef, _callee: Value, _call_args: &[Value] ) -> WasmResult<()>
Translate a
return_call_ref WebAssembly instruction at the builder’s
given position. Read moresource§fn translate_call(
&mut self,
builder: &mut FunctionBuilder<'_>,
_callee_index: FuncIndex,
callee: FuncRef,
call_args: &[Value]
) -> WasmResult<Inst>
fn translate_call( &mut self, builder: &mut FunctionBuilder<'_>, _callee_index: FuncIndex, callee: FuncRef, call_args: &[Value] ) -> WasmResult<Inst>
source§fn translate_call_ref(
&mut self,
_builder: &mut FunctionBuilder<'_>,
_sig_ref: SigRef,
_callee: Value,
_call_args: &[Value]
) -> WasmResult<Inst>
fn translate_call_ref( &mut self, _builder: &mut FunctionBuilder<'_>, _sig_ref: SigRef, _callee: Value, _call_args: &[Value] ) -> WasmResult<Inst>
Translate a
call_ref WebAssembly instruction at the builder’s current
position. Read moresource§fn translate_memory_grow(
&mut self,
pos: FuncCursor<'_>,
_index: MemoryIndex,
_heap: Heap,
_val: Value
) -> WasmResult<Value>
fn translate_memory_grow( &mut self, pos: FuncCursor<'_>, _index: MemoryIndex, _heap: Heap, _val: Value ) -> WasmResult<Value>
Translate a
memory.grow WebAssembly instruction. Read moresource§fn translate_memory_size(
&mut self,
pos: FuncCursor<'_>,
_index: MemoryIndex,
_heap: Heap
) -> WasmResult<Value>
fn translate_memory_size( &mut self, pos: FuncCursor<'_>, _index: MemoryIndex, _heap: Heap ) -> WasmResult<Value>
Translates a
memory.size WebAssembly instruction. Read moresource§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<()>
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 moresource§fn translate_memory_fill(
&mut self,
_pos: FuncCursor<'_>,
_index: MemoryIndex,
_heap: Heap,
_dst: Value,
_val: Value,
_len: Value
) -> WasmResult<()>
fn translate_memory_fill( &mut self, _pos: FuncCursor<'_>, _index: MemoryIndex, _heap: Heap, _dst: Value, _val: Value, _len: Value ) -> WasmResult<()>
Translate a
memory.fill WebAssembly instruction. Read moresource§fn translate_memory_init(
&mut self,
_pos: FuncCursor<'_>,
_index: MemoryIndex,
_heap: Heap,
_seg_index: u32,
_dst: Value,
_src: Value,
_len: Value
) -> WasmResult<()>
fn translate_memory_init( &mut self, _pos: FuncCursor<'_>, _index: MemoryIndex, _heap: Heap, _seg_index: u32, _dst: Value, _src: Value, _len: Value ) -> WasmResult<()>
Translate a
memory.init WebAssembly instruction. Read moresource§fn translate_data_drop(
&mut self,
_pos: FuncCursor<'_>,
_seg_index: u32
) -> WasmResult<()>
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<'_>,
_index: TableIndex,
_table: Table
) -> WasmResult<Value>
fn translate_table_size( &mut self, pos: FuncCursor<'_>, _index: TableIndex, _table: Table ) -> WasmResult<Value>
Translate a
table.size WebAssembly instruction.source§fn translate_table_grow(
&mut self,
pos: FuncCursor<'_>,
_table_index: TableIndex,
_table: Table,
_delta: Value,
_init_value: Value
) -> WasmResult<Value>
fn translate_table_grow( &mut self, pos: FuncCursor<'_>, _table_index: TableIndex, _table: Table, _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,
_table: Table,
_index: Value
) -> WasmResult<Value>
fn translate_table_get( &mut self, builder: &mut FunctionBuilder<'_>, _table_index: TableIndex, _table: Table, _index: Value ) -> WasmResult<Value>
Translate a
table.get WebAssembly instruction.source§fn translate_table_set(
&mut self,
_builder: &mut FunctionBuilder<'_>,
_table_index: TableIndex,
_table: Table,
_value: Value,
_index: Value
) -> WasmResult<()>
fn translate_table_set( &mut self, _builder: &mut FunctionBuilder<'_>, _table_index: TableIndex, _table: Table, _value: Value, _index: Value ) -> WasmResult<()>
Translate a
table.set WebAssembly instruction.source§fn translate_table_copy(
&mut self,
_pos: FuncCursor<'_>,
_dst_index: TableIndex,
_dst_table: Table,
_src_index: TableIndex,
_src_table: Table,
_dst: Value,
_src: Value,
_len: Value
) -> WasmResult<()>
fn translate_table_copy( &mut self, _pos: FuncCursor<'_>, _dst_index: TableIndex, _dst_table: Table, _src_index: TableIndex, _src_table: Table, _dst: Value, _src: Value, _len: Value ) -> WasmResult<()>
Translate a
table.copy WebAssembly instruction.source§fn translate_table_fill(
&mut self,
_pos: FuncCursor<'_>,
_table_index: TableIndex,
_dst: Value,
_val: Value,
_len: Value
) -> WasmResult<()>
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_table_init(
&mut self,
_pos: FuncCursor<'_>,
_seg_index: u32,
_table_index: TableIndex,
_table: Table,
_dst: Value,
_src: Value,
_len: Value
) -> WasmResult<()>
fn translate_table_init( &mut self, _pos: FuncCursor<'_>, _seg_index: u32, _table_index: TableIndex, _table: Table, _dst: Value, _src: Value, _len: Value ) -> WasmResult<()>
Translate a
table.init WebAssembly instruction.source§fn translate_elem_drop(
&mut self,
_pos: FuncCursor<'_>,
_seg_index: u32
) -> WasmResult<()>
fn translate_elem_drop( &mut self, _pos: FuncCursor<'_>, _seg_index: u32 ) -> WasmResult<()>
Translate a
elem.drop WebAssembly instruction.source§fn translate_ref_func(
&mut self,
pos: FuncCursor<'_>,
_func_index: FuncIndex
) -> WasmResult<Value>
fn translate_ref_func( &mut self, pos: FuncCursor<'_>, _func_index: FuncIndex ) -> WasmResult<Value>
Translate a
ref.func WebAssembly instruction.source§fn translate_custom_global_get(
&mut self,
pos: FuncCursor<'_>,
_global_index: GlobalIndex
) -> WasmResult<Value>
fn translate_custom_global_get( &mut self, pos: FuncCursor<'_>, _global_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<'_>,
_global_index: GlobalIndex,
_val: Value
) -> WasmResult<()>
fn translate_custom_global_set( &mut self, _pos: FuncCursor<'_>, _global_index: GlobalIndex, _val: Value ) -> WasmResult<()>
Translate a
global.set WebAssembly instruction at pos for a global
that is custom.source§fn translate_atomic_wait(
&mut self,
pos: FuncCursor<'_>,
_index: MemoryIndex,
_heap: Heap,
_addr: Value,
_expected: Value,
_timeout: Value
) -> WasmResult<Value>
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 moresource§fn translate_atomic_notify(
&mut self,
pos: FuncCursor<'_>,
_index: MemoryIndex,
_heap: Heap,
_addr: Value,
_count: Value
) -> WasmResult<Value>
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 moresource§fn is_wasm_parameter(&self, signature: &Signature, index: usize) -> bool
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 is_wasm_return(&self, signature: &Signature, index: usize) -> bool
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 after_locals(&mut self, num_locals_defined: usize)
fn after_locals(&mut self, num_locals_defined: usize)
Called after the locals for a function have been parsed, and the number
of variables defined by this function is provided.
source§fn translate_return_call(
&mut self,
builder: &mut FunctionBuilder<'_>,
_callee_index: FuncIndex,
callee: FuncRef,
call_args: &[Value]
) -> WasmResult<()>
fn translate_return_call( &mut self, builder: &mut FunctionBuilder<'_>, _callee_index: FuncIndex, callee: FuncRef, call_args: &[Value] ) -> WasmResult<()>
Translate a
return_call WebAssembly instruction at the builder’s
current position. Read moresource§fn translate_ref_null(
&mut self,
pos: FuncCursor<'_>,
ty: WasmHeapType
) -> WasmResult<Value>
fn translate_ref_null( &mut self, pos: FuncCursor<'_>, ty: WasmHeapType ) -> WasmResult<Value>
Translate a
ref.null T WebAssembly instruction. Read moresource§fn translate_ref_is_null(
&mut self,
pos: FuncCursor<'_>,
value: Value
) -> WasmResult<Value>
fn translate_ref_is_null( &mut self, pos: FuncCursor<'_>, value: Value ) -> WasmResult<Value>
Translate a
ref.is_null WebAssembly instruction. Read moresource§fn translate_loop_header(
&mut self,
_builder: &mut FunctionBuilder<'_>
) -> WasmResult<()>
fn translate_loop_header( &mut self, _builder: &mut FunctionBuilder<'_> ) -> WasmResult<()>
Emit code at the beginning of every wasm loop. Read more
source§fn before_unconditionally_trapping_memory_access(
&mut self,
_builder: &mut FunctionBuilder<'_>
) -> WasmResult<()>
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 before_translate_function(
&mut self,
_builder: &mut FunctionBuilder<'_>,
_state: &FuncTranslationState
) -> WasmResult<()>
fn before_translate_function( &mut self, _builder: &mut FunctionBuilder<'_>, _state: &FuncTranslationState ) -> WasmResult<()>
Optional callback for the
FunctionEnvironment performing this translation to perform work
before the function body is translated.source§fn relaxed_simd_deterministic(&self) -> bool
fn relaxed_simd_deterministic(&self) -> bool
Whether or not to force relaxed simd instructions to have deterministic
lowerings meaning they will produce the same results across all hosts,
regardless of the cost to performance.
source§fn has_native_fma(&self) -> bool
fn has_native_fma(&self) -> bool
Whether or not the target being translated for has a native fma
instruction. If it does not then when relaxed simd isn’t deterministic
the translation of the
f32x4.relaxed_fma instruction, for example,
will do a multiplication and then an add instead of the fused version.source§fn is_x86(&self) -> bool
fn is_x86(&self) -> bool
Returns whether this is an x86 target, which may alter lowerings of
relaxed simd instructions.
source§fn use_x86_blendv_for_relaxed_laneselect(&self, ty: Type) -> bool
fn use_x86_blendv_for_relaxed_laneselect(&self, ty: Type) -> bool
Returns whether the CLIF
x86_blendv instruction should be used for the
relaxed simd *.relaxed_laneselect instruction for the specified type.source§fn use_x86_pshufb_for_relaxed_swizzle(&self) -> bool
fn use_x86_pshufb_for_relaxed_swizzle(&self) -> bool
Returns whether the CLIF
x86_pshufb instruction should be used for the
i8x16.relaxed_swizzle instruction.source§fn use_x86_pmulhrsw_for_relaxed_q15mul(&self) -> bool
fn use_x86_pmulhrsw_for_relaxed_q15mul(&self) -> bool
Returns whether the CLIF
x86_pmulhrsw instruction should be used for
the i8x16.relaxed_q15mulr_s instruction.source§fn use_x86_pmaddubsw_for_dot(&self) -> bool
fn use_x86_pmaddubsw_for_dot(&self) -> bool
Returns whether the CLIF
x86_pmaddubsw instruction should be used for
the relaxed-simd dot-product instructions instruction.source§fn handle_before_return(
&mut self,
_retvals: &[Value],
_builder: &mut FunctionBuilder<'_>
)
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
)
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
)
fn before_store( &mut self, _builder: &mut FunctionBuilder<'_>, _val_size: u8, _addr: Value, _offset: u64 )
Inserts code before a store.
source§fn update_global(
&mut self,
_builder: &mut FunctionBuilder<'_>,
_global_index: u32,
_value: Value
)
fn update_global( &mut self, _builder: &mut FunctionBuilder<'_>, _global_index: u32, _value: Value )
Inserts code before updating a global.
source§fn before_memory_grow(
&mut self,
_builder: &mut FunctionBuilder<'_>,
_num_bytes: Value,
_mem_index: MemoryIndex
)
fn before_memory_grow( &mut self, _builder: &mut FunctionBuilder<'_>, _num_bytes: Value, _mem_index: MemoryIndex )
Inserts code before memory.grow.
source§impl<'dummy_environment> TargetEnvironment for DummyFuncEnvironment<'dummy_environment>
impl<'dummy_environment> TargetEnvironment for DummyFuncEnvironment<'dummy_environment>
source§fn target_config(&self) -> TargetFrontendConfig
fn target_config(&self) -> TargetFrontendConfig
Get the information needed to produce Cranelift IR for the given target.
source§fn heap_access_spectre_mitigation(&self) -> bool
fn heap_access_spectre_mitigation(&self) -> bool
Whether to enable Spectre mitigations for heap accesses.
source§fn pointer_type(&self) -> Type
fn pointer_type(&self) -> Type
Get the Cranelift integer type to use for native pointers. Read more
source§fn pointer_bytes(&self) -> u8
fn pointer_bytes(&self) -> u8
Get the size of a native pointer, in bytes.
source§fn reference_type(&self, ty: WasmHeapType) -> Type
fn reference_type(&self, ty: WasmHeapType) -> Type
Get the Cranelift reference type to use for the given Wasm reference
type. Read more
source§impl<'dummy_environment> TypeConvert for DummyFuncEnvironment<'dummy_environment>
impl<'dummy_environment> TypeConvert for DummyFuncEnvironment<'dummy_environment>
source§fn lookup_heap_type(&self, _index: TypeIndex) -> WasmHeapType
fn lookup_heap_type(&self, _index: TypeIndex) -> WasmHeapType
Converts the specified type index from a heap type into a canonicalized
heap type.
source§fn convert_global_type(&self, ty: &GlobalType) -> Global
fn convert_global_type(&self, ty: &GlobalType) -> Global
Converts a wasmparser table type into a wasmtime type
source§fn convert_table_type(&self, ty: &TableType) -> Table
fn convert_table_type(&self, ty: &TableType) -> Table
Converts a wasmparser table type into a wasmtime type
source§fn convert_func_type(&self, ty: &FuncType) -> WasmFuncType
fn convert_func_type(&self, ty: &FuncType) -> WasmFuncType
Converts a wasmparser function type to a wasmtime type
source§fn convert_valtype(&self, ty: ValType) -> WasmType
fn convert_valtype(&self, ty: ValType) -> WasmType
Converts a wasmparser value type to a wasmtime type
source§fn convert_ref_type(&self, ty: RefType) -> WasmRefType
fn convert_ref_type(&self, ty: RefType) -> WasmRefType
Converts a wasmparser reference type to a wasmtime type
source§fn convert_heap_type(&self, ty: HeapType) -> WasmHeapType
fn convert_heap_type(&self, ty: HeapType) -> WasmHeapType
Converts a wasmparser heap type to a wasmtime type
Auto Trait Implementations§
impl<'dummy_environment> RefUnwindSafe for DummyFuncEnvironment<'dummy_environment>
impl<'dummy_environment> Send for DummyFuncEnvironment<'dummy_environment>
impl<'dummy_environment> Sync for DummyFuncEnvironment<'dummy_environment>
impl<'dummy_environment> Unpin for DummyFuncEnvironment<'dummy_environment>
impl<'dummy_environment> UnwindSafe for DummyFuncEnvironment<'dummy_environment>
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