Struct veloren_voxygen::render::renderer::Renderer
source · pub struct Renderer {Show 30 fields
device: Arc<Device>,
queue: Queue,
surface: Surface,
surface_config: SurfaceConfiguration,
sampler: Sampler,
depth_sampler: Sampler,
state: State,
recreation_pending: Option<PipelineModes>,
layouts: Layouts,
locals: Locals,
views: Views,
noise_tex: Texture,
quad_index_buffer_u16: Buffer<u16>,
quad_index_buffer_u32: Buffer<u32>,
shaders: AssetHandle<Shaders>,
shaders_watcher: ReloadWatcher,
pipeline_modes: PipelineModes,
other_modes: OtherModes,
resolution: Vec2<u32>,
take_screenshot: Option<Box<dyn FnOnce(Result<RgbImage, String>) + Send>>,
profiler: GpuProfiler,
profile_times: Vec<GpuTimerScopeResult>,
profiler_features_enabled: bool,
ui_premultiply_uploads: BatchedUploads,
egui_renderpass: RenderPass,
is_minimized: bool,
graphics_backend: String,
intermediate_format: TextureFormat,
present_modes: Vec<PresentMode>,
max_texture_size: u32,
}
Expand description
A type that encapsulates rendering state. Renderer
is central to Voxygen’s
rendering subsystem and contains any state necessary to interact with the
GPU, along with pipeline state objects (PSOs) needed to renderer different
kinds of models to the screen.
Fields§
§device: Arc<Device>
§queue: Queue
§surface: Surface
§surface_config: SurfaceConfiguration
§sampler: Sampler
§depth_sampler: Sampler
§state: State
§recreation_pending: Option<PipelineModes>
§layouts: Layouts
§locals: Locals
§views: Views
§noise_tex: Texture
§quad_index_buffer_u16: Buffer<u16>
§quad_index_buffer_u32: Buffer<u32>
§shaders: AssetHandle<Shaders>
§shaders_watcher: ReloadWatcher
§pipeline_modes: PipelineModes
§other_modes: OtherModes
§resolution: Vec2<u32>
§take_screenshot: Option<Box<dyn FnOnce(Result<RgbImage, String>) + Send>>
§profiler: GpuProfiler
§profile_times: Vec<GpuTimerScopeResult>
§profiler_features_enabled: bool
§ui_premultiply_uploads: BatchedUploads
§egui_renderpass: RenderPass
§is_minimized: bool
§graphics_backend: String
§intermediate_format: TextureFormat
The texture format used for the intermediate rendering passes
present_modes: Vec<PresentMode>
Supported present modes.
max_texture_size: u32
Cached max texture size.
Implementations§
source§impl Renderer
impl Renderer
pub fn bind_globals( &self, global_model: &GlobalModel, lod_data: &LodData, ) -> GlobalsBindGroup
pub fn bind_sprite_globals( &self, global_model: &GlobalModel, lod_data: &LodData, sprite_verts: &SpriteVerts, ) -> SpriteGlobalsBindGroup
pub fn create_debug_bound_locals(&mut self, vals: &[Locals]) -> BoundLocals
pub fn create_ui_bound_locals(&mut self, vals: &[Locals]) -> BoundLocals
pub fn ui_bind_texture(&mut self, texture: &Texture) -> TextureBindGroup
pub fn create_figure_bound_locals( &mut self, locals: &[Locals], bone_data: &[BoneData], ) -> BoundLocals
pub fn create_rope_bound_locals(&mut self, locals: &[Locals]) -> BoundLocals
pub fn create_terrain_bound_locals(&mut self, locals: &[Locals]) -> BoundLocals
pub fn create_shadow_bound_locals(&mut self, locals: &[Locals]) -> BoundLocals
pub fn create_rain_occlusion_bound_locals( &mut self, locals: &[Locals], ) -> BoundLocals
pub fn figure_bind_atlas_textures( &self, col_light: Texture, ) -> AtlasTextures<Locals, FigureSpriteAtlasData>
pub fn terrain_bind_atlas_textures( &self, col_light: Texture, kinds: Texture, ) -> AtlasTextures<Locals, TerrainAtlasData>
pub fn sprite_bind_atlas_textures( &self, col_light: Texture, ) -> AtlasTextures<Locals, FigureSpriteAtlasData>
source§impl Renderer
impl Renderer
sourcepub fn new(
window: &Window,
mode: RenderMode,
runtime: &Runtime,
) -> Result<Self, RenderError>
pub fn new( window: &Window, mode: RenderMode, runtime: &Runtime, ) -> Result<Self, RenderError>
Create a new Renderer
from a variety of backend-specific components
and the window targets.
sourcepub fn graphics_backend(&self) -> &str
pub fn graphics_backend(&self) -> &str
Get the graphics backend being used
sourcepub fn pipeline_creation_status(&self) -> Option<(usize, usize)>
pub fn pipeline_creation_status(&self) -> Option<(usize, usize)>
Check the status of the intial pipeline creation
Returns None
if complete
Returns Some((total, complete))
if in progress
sourcepub fn pipeline_recreation_status(&self) -> Option<(usize, usize)>
pub fn pipeline_recreation_status(&self) -> Option<(usize, usize)>
Check the status the pipeline recreation
Returns None
if pipelines are currently not being recreated
Returns Some((total, complete))
if in progress
sourcepub fn set_render_mode(&mut self, mode: RenderMode) -> Result<(), RenderError>
pub fn set_render_mode(&mut self, mode: RenderMode) -> Result<(), RenderError>
Change the render mode.
sourcepub fn pipeline_modes(&self) -> &PipelineModes
pub fn pipeline_modes(&self) -> &PipelineModes
Get the pipelines mode.
sourcepub fn present_modes(&self) -> &[PresentMode]
pub fn present_modes(&self) -> &[PresentMode]
Get the supported present modes.
sourcepub fn timings(&self) -> Vec<(u8, &str, f64)>
pub fn timings(&self) -> Vec<(u8, &str, f64)>
Get the current profiling times Nested timings immediately follow their parent Returns Vec<(how nested this timing is, label, length in seconds)>
sourcepub fn on_resize(&mut self, dims: Vec2<u32>)
pub fn on_resize(&mut self, dims: Vec2<u32>)
Resize internal render targets to match window render target dimensions.
pub fn maintain(&self)
sourcefn create_rt_views(
device: &Device,
size: (u32, u32),
pipeline_modes: &PipelineModes,
other_modes: &OtherModes,
format: TextureFormat,
) -> (Views, [Vec2<f32>; 5])
fn create_rt_views( device: &Device, size: (u32, u32), pipeline_modes: &PipelineModes, other_modes: &OtherModes, format: TextureFormat, ) -> (Views, [Vec2<f32>; 5])
Create render target views
sourcepub fn resolution(&self) -> Vec2<u32>
pub fn resolution(&self) -> Vec2<u32>
Get the resolution of the render target.
sourcepub fn get_shadow_resolution(&self) -> (Vec2<u32>, Vec2<u32>)
pub fn get_shadow_resolution(&self) -> (Vec2<u32>, Vec2<u32>)
Get the resolution of the shadow render target.
sourcepub fn start_recording_frame<'a>(
&'a mut self,
globals: &'a GlobalsBindGroup,
) -> Result<Option<Drawer<'a>>, RenderError>
pub fn start_recording_frame<'a>( &'a mut self, globals: &'a GlobalsBindGroup, ) -> Result<Option<Drawer<'a>>, RenderError>
NOTE: Supported by Vulkan (by default), DirectX 10+ (it seems–it’s hard
to find proof of this, but Direct3D 10 apparently does it by
default, and 11 definitely does, so I assume it’s natively supported
by DirectX itself), OpenGL 3.2+, and Metal (done by default). While
there may be some GPUs that don’t quite support it correctly, the
impact is relatively small, so there is no reason not to enable it where
available.
Start recording the frame
When the returned Drawer
is dropped the recorded draw calls will be
submitted to the queue
If there is an intermittent issue with the swap chain then Ok(None) will
be returned
sourcefn recreate_pipelines(&mut self, pipeline_modes: PipelineModes)
fn recreate_pipelines(&mut self, pipeline_modes: PipelineModes)
Recreate the pipelines
sourcepub fn create_consts<T: Copy + Pod>(&mut self, vals: &[T]) -> Consts<T>
pub fn create_consts<T: Copy + Pod>(&mut self, vals: &[T]) -> Consts<T>
Create a new set of constants with the provided values.
pub fn create_consts_inner<T: Copy + Pod>( device: &Device, queue: &Queue, vals: &[T], ) -> Consts<T>
sourcepub fn update_consts<T: Copy + Pod>(&self, consts: &mut Consts<T>, vals: &[T])
pub fn update_consts<T: Copy + Pod>(&self, consts: &mut Consts<T>, vals: &[T])
Update a set of constants with the provided values.
pub fn update_clouds_locals(&mut self, new_val: Locals)
pub fn update_postprocess_locals(&mut self, new_val: Locals)
sourcepub fn create_instances<T: Copy + Pod>(&mut self, vals: &[T]) -> Instances<T>
pub fn create_instances<T: Copy + Pod>(&mut self, vals: &[T]) -> Instances<T>
Create a new set of instances with the provided values.
sourcepub(super) fn ensure_sufficient_index_length<V: Vertex>(
&mut self,
vert_length: usize,
)
pub(super) fn ensure_sufficient_index_length<V: Vertex>( &mut self, vert_length: usize, )
Ensure that the quad index buffer is large enough for a quad vertex buffer with this many vertices
pub fn create_sprite_verts(&mut self, mesh: Mesh<Vertex>) -> SpriteVerts
sourcepub fn create_model<V: Vertex>(&mut self, mesh: &Mesh<V>) -> Option<Model<V>>
pub fn create_model<V: Vertex>(&mut self, mesh: &Mesh<V>) -> Option<Model<V>>
Create a new model from the provided mesh. If the provided mesh is empty this returns None
sourcepub fn create_dynamic_model<V: Vertex>(
&mut self,
size: usize,
) -> DynamicModel<V>
pub fn create_dynamic_model<V: Vertex>( &mut self, size: usize, ) -> DynamicModel<V>
Create a new dynamic model with the specified size.
sourcepub fn update_model<V: Vertex>(
&self,
model: &DynamicModel<V>,
mesh: &Mesh<V>,
offset: usize,
)
pub fn update_model<V: Vertex>( &self, model: &DynamicModel<V>, mesh: &Mesh<V>, offset: usize, )
Update a dynamic model with a mesh and a offset.
sourcepub fn max_texture_size(&self) -> u32
pub fn max_texture_size(&self) -> u32
Return the maximum supported texture size.
sourcepub fn create_texture_with_data_raw(
&mut self,
texture_info: &TextureDescriptor<'_>,
view_info: &TextureViewDescriptor<'_>,
sampler_info: &SamplerDescriptor<'_>,
data: &[u8],
) -> Texture
pub fn create_texture_with_data_raw( &mut self, texture_info: &TextureDescriptor<'_>, view_info: &TextureViewDescriptor<'_>, sampler_info: &SamplerDescriptor<'_>, data: &[u8], ) -> Texture
Create a new immutable texture from the provided image.
§Panics
If the provided data doesn’t completely fill the texture this function will panic.
sourcepub fn create_texture_raw(
&mut self,
texture_info: &TextureDescriptor<'_>,
view_info: &TextureViewDescriptor<'_>,
sampler_info: &SamplerDescriptor<'_>,
) -> Texture
pub fn create_texture_raw( &mut self, texture_info: &TextureDescriptor<'_>, view_info: &TextureViewDescriptor<'_>, sampler_info: &SamplerDescriptor<'_>, ) -> Texture
Create a new raw texture.
sourcepub fn create_texture(
&mut self,
image: &DynamicImage,
filter_method: Option<FilterMode>,
address_mode: Option<AddressMode>,
) -> Result<Texture, RenderError>
pub fn create_texture( &mut self, image: &DynamicImage, filter_method: Option<FilterMode>, address_mode: Option<AddressMode>, ) -> Result<Texture, RenderError>
Create a new texture from the provided image.
sourcepub fn create_dynamic_texture(&mut self, dims: Vec2<u32>) -> Texture
pub fn create_dynamic_texture(&mut self, dims: Vec2<u32>) -> Texture
Create a new dynamic texture with the specified dimensions.
Currently only supports Rgba8Srgb.
sourcepub fn update_texture<T: Pod>(
&mut self,
texture: &Texture,
offset: [u32; 2],
size: [u32; 2],
data: &[T],
)
pub fn update_texture<T: Pod>( &mut self, texture: &Texture, offset: [u32; 2], size: [u32; 2], data: &[T], )
Update a texture with the provided offset, size, and data.
sourcepub fn ui_premultiply_upload(
&mut self,
target_texture: &Arc<Texture>,
batch: UploadBatchId,
image: &RgbaImage,
offset: Vec2<u16>,
) -> UploadBatchId
pub fn ui_premultiply_upload( &mut self, target_texture: &Arc<Texture>, batch: UploadBatchId, image: &RgbaImage, offset: Vec2<u16>, ) -> UploadBatchId
See docs on ui::BatchedUploads::submit
.
Auto Trait Implementations§
impl !Freeze for Renderer
impl !RefUnwindSafe for Renderer
impl Send for Renderer
impl !Sync for Renderer
impl Unpin for Renderer
impl !UnwindSafe for Renderer
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
§impl<T> Chain<T> for T
impl<T> Chain<T> for T
source§impl<T> CheckedAs for T
impl<T> CheckedAs for T
source§fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
source§impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
source§fn checked_cast_from(src: Src) -> Option<Dst>
fn checked_cast_from(src: Src) -> Option<Dst>
§impl<T> Conv for T
impl<T> Conv for T
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self
to use its Display
implementation when
Debug
-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self
to use its LowerExp
implementation when
Debug
-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self
to use its LowerHex
implementation when
Debug
-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self
to use its Octal
implementation when Debug
-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self
to use its Pointer
implementation when
Debug
-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self
to use its UpperExp
implementation when
Debug
-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self
to use its UpperHex
implementation when
Debug
-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
§impl<S> FromSample<S> for S
impl<S> FromSample<S> for S
fn from_sample_(s: S) -> S
§impl<T> GetSetFdFlags for T
impl<T> GetSetFdFlags for T
§fn get_fd_flags(&self) -> Result<FdFlags, Error>where
T: AsFilelike,
fn get_fd_flags(&self) -> Result<FdFlags, Error>where
T: AsFilelike,
self
file descriptor.§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,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§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>
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>
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<F, T> IntoSample<T> for Fwhere
T: FromSample<F>,
impl<F, T> IntoSample<T> for Fwhere
T: FromSample<F>,
fn into_sample(self) -> T
source§impl<Src, Dst> LosslessTryInto<Dst> for Srcwhere
Dst: LosslessTryFrom<Src>,
impl<Src, Dst> LosslessTryInto<Dst> for Srcwhere
Dst: LosslessTryFrom<Src>,
source§fn lossless_try_into(self) -> Option<Dst>
fn lossless_try_into(self) -> Option<Dst>
source§impl<Src, Dst> LossyInto<Dst> for Srcwhere
Dst: LossyFrom<Src>,
impl<Src, Dst> LossyInto<Dst> for Srcwhere
Dst: LossyFrom<Src>,
source§fn lossy_into(self) -> Dst
fn lossy_into(self) -> Dst
source§impl<T> OverflowingAs for T
impl<T> OverflowingAs for T
source§fn overflowing_as<Dst>(self) -> (Dst, bool)where
T: OverflowingCast<Dst>,
fn overflowing_as<Dst>(self) -> (Dst, bool)where
T: OverflowingCast<Dst>,
source§impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere
Src: OverflowingCast<Dst>,
impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere
Src: OverflowingCast<Dst>,
source§fn overflowing_cast_from(src: Src) -> (Dst, bool)
fn overflowing_cast_from(src: Src) -> (Dst, bool)
§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self
, then passes self.as_ref()
into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self
, then passes self.as_mut()
into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self
, then passes self.deref()
into the pipe function.§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> Pointee for T
impl<T> Pointee for T
source§impl<T> SaturatingAs for T
impl<T> SaturatingAs for T
source§fn saturating_as<Dst>(self) -> Dstwhere
T: SaturatingCast<Dst>,
fn saturating_as<Dst>(self) -> Dstwhere
T: SaturatingCast<Dst>,
source§impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere
Src: SaturatingCast<Dst>,
impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere
Src: SaturatingCast<Dst>,
source§fn saturating_cast_from(src: Src) -> Dst
fn saturating_cast_from(src: Src) -> Dst
source§impl<Context> SubContext<Context> for Context
impl<Context> SubContext<Context> for Context
fn sub_context(self) -> Context
§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B>
of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B>
of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R>
view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R>
view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target
of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target
of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap()
only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut()
only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow()
only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut()
only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref()
only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut()
only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref()
only in debug builds, and is erased in release
builds.