pub struct Mesh<const N: usize> { /* private fields */ }Expand description
A discretization of a rectangular axis aligned grid into a collection of uniform grids of nodes
with different spacings. A Mesh is built on top of a Quadtree, allowing one to selectively
refine areas of interest without wasting computational power on smoother regions of the domain.
This abstraction also handles multithread dispatch and sharing nodes between threads in a an effecient manner. This allows the user to write generic, sequential, and straighforward code on the main thread, while still maximising performance and fully utilizing computational resources.
Implementations§
Source§impl<const N: usize> Mesh<N>
impl<const N: usize> Mesh<N>
Sourcepub fn evaluate<P: Function<N> + Sync>(
&mut self,
order: usize,
function: P,
source: ImageRef<'_>,
dest: ImageMut<'_>,
) -> Result<(), P::Error>
pub fn evaluate<P: Function<N> + Sync>( &mut self, order: usize, function: P, source: ImageRef<'_>, dest: ImageMut<'_>, ) -> Result<(), P::Error>
Applies the projection to source, and stores the result in dest.
Sourcepub fn is_block_in_interior(&self, block: BlockId) -> bool
pub fn is_block_in_interior(&self, block: BlockId) -> bool
Checks if the all neighbors of the block have strongly enforced boundary conditions (and thus can use centered stencils).
Sourcepub fn apply<C: SystemBoundaryConds<N> + Sync, P: Function<N> + Sync>(
&mut self,
order: usize,
bcs: C,
op: P,
f: ImageMut<'_>,
) -> Result<(), P::Error>
pub fn apply<C: SystemBoundaryConds<N> + Sync, P: Function<N> + Sync>( &mut self, order: usize, bcs: C, op: P, f: ImageMut<'_>, ) -> Result<(), P::Error>
Applies an operator to a system in place, enforcing both strong and weak boundary conditions and running necessary preprocessing.
Sourcepub fn copy_from_slice(&mut self, dest: ImageMut<'_>, src: ImageRef<'_>)
pub fn copy_from_slice(&mut self, dest: ImageMut<'_>, src: ImageRef<'_>)
Copies an immutable src slice into a mutable dest slice.
Sourcepub fn project<P: Projection<N> + Sync>(
&mut self,
order: usize,
projection: P,
dest: &mut [f64],
)
pub fn project<P: Projection<N> + Sync>( &mut self, order: usize, projection: P, dest: &mut [f64], )
Applies a projection and stores the result in the destination vector.
Sourcepub fn dissipation<const ORDER: usize>(
&mut self,
amplitude: f64,
dest: ImageMut<'_>,
)
pub fn dissipation<const ORDER: usize>( &mut self, amplitude: f64, dest: ImageMut<'_>, )
Applies the projection to source, and stores the result in dest.
Sourcepub fn spacing_per_vertex(&mut self, dest: &mut [f64])
pub fn spacing_per_vertex(&mut self, dest: &mut [f64])
This function computes the distance between each vertex and its nearest neighbor.
pub fn adaptive_cfl(&mut self, spacing_per_vertex: &[f64], dest: ImageMut<'_>)
Source§impl<const N: usize> Mesh<N>
impl<const N: usize> Mesh<N>
Sourcepub fn refine_flags(&self) -> &[bool]
pub fn refine_flags(&self) -> &[bool]
Retrieves a vector representing all regridding flags for the mesh.
Sourcepub fn coarsen_flags(&self) -> &[bool]
pub fn coarsen_flags(&self) -> &[bool]
Retrievs a vector representing all coarsening flags for the mesh.
Sourcepub fn refine_global(&mut self)
pub fn refine_global(&mut self)
Flags every cell for refinement, then performs the operation.
Sourcepub fn refine_innermost(&mut self)
pub fn refine_innermost(&mut self)
Refines innermost cell
Sourcepub fn coarsen_innermost(&mut self)
pub fn coarsen_innermost(&mut self)
Coarsens innermost cell
Sourcepub fn regrid_in_radius(&mut self, radius: f64, fgl: usize)
pub fn regrid_in_radius(&mut self, radius: f64, fgl: usize)
Refines or coarsens cells one level (towards target level fgl) within a given radius
Sourcepub fn flag_wavelets(
&mut self,
order: usize,
lower: f64,
upper: f64,
data: ImageRef<'_>,
)
pub fn flag_wavelets( &mut self, order: usize, lower: f64, upper: f64, data: ImageRef<'_>, )
Flags cells for refinement using a wavelet criterion. The system must have filled
boundaries. This function tags any cell that is insufficiently refined to approximate
operators of the given order within the range of error.
Sourcepub fn flags_debug(&mut self, debug: &mut [i64])
pub fn flags_debug(&mut self, debug: &mut [i64])
Store flags for each cell in a debug buffer.
Sourcepub fn set_refine_flag(&mut self, cell: usize)
pub fn set_refine_flag(&mut self, cell: usize)
Manually marks a cell for refinement.
Sourcepub fn set_coarsen_flag(&mut self, cell: usize)
pub fn set_coarsen_flag(&mut self, cell: usize)
Manually marks a cell for coarsening.
pub fn buffer_refine_flags(&mut self, count: usize)
Sourcepub fn limit_level_range_flags(&mut self, min_level: usize, max_level: usize)
pub fn limit_level_range_flags(&mut self, min_level: usize, max_level: usize)
Limits coarsening to cells with a level > min_level, and refinement to
cells with a level < max_level.
Sourcepub fn balance_flags(&mut self)
pub fn balance_flags(&mut self)
After cells have been tagged, the refinement/coarsening flags must be balanced to ensure that the 2:1 balance across faces and vertices is still maintained.
Sourcepub fn requires_regridding(&self) -> bool
pub fn requires_regridding(&self) -> bool
Returns true if the mesh requires regridding (i.e. any cells are tagged for either refinement or coarsening).
Sourcepub fn num_refine_cells(&self) -> usize
pub fn num_refine_cells(&self) -> usize
The number of cell that are marked for refinement.
Sourcepub fn num_coarsen_cells(&self) -> usize
pub fn num_coarsen_cells(&self) -> usize
The number of cells that are marked for coarsening.
Source§impl<const N: usize> Mesh<N>
impl<const N: usize> Mesh<N>
Sourcepub fn transfer_system(
&mut self,
order: usize,
source: ImageRef<'_>,
dest: ImageMut<'_>,
)
pub fn transfer_system( &mut self, order: usize, source: ImageRef<'_>, dest: ImageMut<'_>, )
Transfers data from an older version of the mesh to the new refined version, using the given order of interpolation.
Sourcepub fn fill_boundary<BCs: SystemBoundaryConds<N> + Sync>(
&mut self,
order: usize,
bcs: BCs,
system: ImageMut<'_>,
)
pub fn fill_boundary<BCs: SystemBoundaryConds<N> + Sync>( &mut self, order: usize, bcs: BCs, system: ImageMut<'_>, )
Enforces strong boundary conditions. This includes strong physical boundary conditions, as well as handling interior boundaries (same level, coarse-fine, or fine-coarse).
Sourcepub fn fill_boundary_to_extent<C: SystemBoundaryConds<N> + Sync>(
&mut self,
order: usize,
extent: usize,
bcs: C,
system: ImageMut<'_>,
)
pub fn fill_boundary_to_extent<C: SystemBoundaryConds<N> + Sync>( &mut self, order: usize, extent: usize, bcs: C, system: ImageMut<'_>, )
Enforces strong boundary conditions, only filling ghost nodes if those nodes are within extent
of a physical node. This is useful if one is using Kriss-Olgier dissipation, where dissipation
and derivatives use different order stencils.
Sourcepub fn block_debug(&mut self, debug: &mut [i64])
pub fn block_debug(&mut self, debug: &mut [i64])
Stores the index of the block which owns each individual node in a debug vector.
Sourcepub fn cell_debug(&mut self, debug: &mut [i64])
pub fn cell_debug(&mut self, debug: &mut [i64])
Stores the index of the cell which owns each individual node in a debug vector.
Sourcepub fn interface_neighbor_debug(&mut self, extent: usize, debug: &mut [i64])
pub fn interface_neighbor_debug(&mut self, extent: usize, debug: &mut [i64])
Stores the index of the neighbor along each interface.
Sourcepub fn interface_index_debug(&mut self, extent: usize, debug: &mut [i64])
pub fn interface_index_debug(&mut self, extent: usize, debug: &mut [i64])
Stores the index of each interface for nodes along that interface.
Source§impl<const N: usize> Mesh<N>
impl<const N: usize> Mesh<N>
Sourcepub fn new(
bounds: HyperBox<N>,
width: usize,
ghost: usize,
boundary: FaceArray<N, BoundaryClass>,
) -> Self
pub fn new( bounds: HyperBox<N>, width: usize, ghost: usize, boundary: FaceArray<N, BoundaryClass>, ) -> Self
Constructs a new Mesh covering the domain, with a number of nodes
defined by width and ghost.
Sourcepub fn num_blocks(&self) -> usize
pub fn num_blocks(&self) -> usize
Returns the total number of blocks on the mesh.
Sourcepub fn num_active_cells(&self) -> usize
pub fn num_active_cells(&self) -> usize
Returns the total number of cells on the mesh.
pub fn num_dofs(&self) -> usize
Sourcepub fn boundary_classes(&self) -> FaceArray<N, BoundaryClass>
pub fn boundary_classes(&self) -> FaceArray<N, BoundaryClass>
Returns the boundary classes associated with each boundary of the physical domain.
Sourcepub fn blocks(&self) -> &TreeBlocks<N>
pub fn blocks(&self) -> &TreeBlocks<N>
Returns underlying TreeBlocks<N> object.
Sourcepub fn block_nodes(&self, block: BlockId) -> Range<usize>
pub fn block_nodes(&self, block: BlockId) -> Range<usize>
The range of nodes assigned to a given block.
Sourcepub fn block_space(&self, block: BlockId) -> NodeSpace<N>
pub fn block_space(&self, block: BlockId) -> NodeSpace<N>
Computes the nodespace corresponding to a block.
Sourcepub fn block_bounds(&self, block: BlockId) -> HyperBox<N>
pub fn block_bounds(&self, block: BlockId) -> HyperBox<N>
Computes the bounds of a block.
Sourcepub fn block_physical_boundary_flags(&self, block: BlockId) -> FaceMask<N>
pub fn block_physical_boundary_flags(&self, block: BlockId) -> FaceMask<N>
Computes flags indicating whether a particular face of a block borders a physical boundary.
Sourcepub fn block_boundary_classes(
&self,
block: BlockId,
) -> FaceArray<N, BoundaryClass>
pub fn block_boundary_classes( &self, block: BlockId, ) -> FaceArray<N, BoundaryClass>
Indicates what class of boundary condition is enforced along each face of the block.
Sourcepub fn block_bcs<B: SystemBoundaryConds<N>>(
&self,
block: BlockId,
bcs: B,
) -> BlockBoundaryConds<N, B>
pub fn block_bcs<B: SystemBoundaryConds<N>>( &self, block: BlockId, bcs: B, ) -> BlockBoundaryConds<N, B>
Produces a block boundary which correctly accounts for interior interfaces.
Sourcepub fn block_level(&self, block: BlockId) -> usize
pub fn block_level(&self, block: BlockId) -> usize
The level of a given block.
Sourcepub fn window_bounds(
&self,
block: BlockId,
window: NodeWindow<N>,
) -> HyperBox<N>
pub fn window_bounds( &self, block: BlockId, window: NodeWindow<N>, ) -> HyperBox<N>
Finds bounds associated with a node window.
Sourcepub fn active_window(&self, cell: ActiveCellId) -> NodeWindow<N>
pub fn active_window(&self, cell: ActiveCellId) -> NodeWindow<N>
Retrieves the node window associated with a certain active cell on its block.
Sourcepub fn interpolate_window(
&self,
cell: ActiveCellId,
position: [f64; N],
) -> NodeWindow<N>
pub fn interpolate_window( &self, cell: ActiveCellId, position: [f64; N], ) -> NodeWindow<N>
Retrieves the node window that is optimal for interpolating values to the given position, lying within the given active cell.
Sourcepub fn element_window(&self, cell: ActiveCellId) -> NodeWindow<N>
pub fn element_window(&self, cell: ActiveCellId) -> NodeWindow<N>
Element associated with a given cell.
Sourcepub fn element_coarse_window(&self, cell: ActiveCellId) -> NodeWindow<N>
pub fn element_coarse_window(&self, cell: ActiveCellId) -> NodeWindow<N>
Returns the window of nodes in a block corresponding to a given cell, including no padding.
Sourcepub fn request_element(&mut self, width: usize, order: usize) -> Element<N>
pub fn request_element(&mut self, width: usize, order: usize) -> Element<N>
Retrieves an element from the mesh’s element cache.
Sourcepub fn replace_element(&mut self, element: Element<N>)
pub fn replace_element(&mut self, element: Element<N>)
Reinserts an element into the mesh’s element cache.
Sourcepub fn cell_node_size(&self, cell: ActiveCellId) -> [usize; N]
pub fn cell_node_size(&self, cell: ActiveCellId) -> [usize; N]
Retrieves the number of nodes along each axis of a cell.
This defaults to [self.width; N] but is increased by one
if the cell lies along a block boundary for a given axis.
Sourcepub fn active_node_origin(&self, cell: ActiveCellId) -> [usize; N]
pub fn active_node_origin(&self, cell: ActiveCellId) -> [usize; N]
Returns the origin of an active cell in its block’s NodeSpace<N>.
Sourcepub fn cell_needs_coarse_element(&self, cell: ActiveCellId) -> bool
pub fn cell_needs_coarse_element(&self, cell: ActiveCellId) -> bool
Returns true if the given cell is on a boundary that does not contain ghost nodes. If this is the case we must fall back to a lower order element error approximation.
Sourcepub fn num_levels(&self) -> usize
pub fn num_levels(&self) -> usize
Returns number of levels on the mesh.
Sourcepub fn min_spacing(&self) -> f64
pub fn min_spacing(&self) -> f64
Returns the minimum spatial distance between any two nodes on the mesh. Commonly used in conjunction with a CFL factor to determine time step.
Sourcepub fn block_spacing(&self, block: BlockId) -> f64
pub fn block_spacing(&self, block: BlockId) -> f64
Computes the spacing on a particular block (albeit not accounting for coarse-fine interfaces).
Sourcepub fn block_compute<F: Fn(&Self, &MeshStore, BlockId) + Sync>(&mut self, f: F)
pub fn block_compute<F: Fn(&Self, &MeshStore, BlockId) + Sync>(&mut self, f: F)
Runs a computation in parallel on every single block in the mesh, providing
a MeshStore object for allocating scratch data.
Sourcepub fn try_block_compute<E: Send, F: Fn(&Self, &MeshStore, BlockId) -> Result<(), E> + Sync>(
&mut self,
f: F,
) -> Result<(), E>
pub fn try_block_compute<E: Send, F: Fn(&Self, &MeshStore, BlockId) -> Result<(), E> + Sync>( &mut self, f: F, ) -> Result<(), E>
Runs a (possibily failable) computation in parallel on every single block in the mesh.
Sourcepub fn l2_norm_system(&mut self, source: ImageRef<'_>) -> f64
pub fn l2_norm_system(&mut self, source: ImageRef<'_>) -> f64
Computes the maximum l2 norm of all fields in the system.
Sourcepub fn max_norm_system(&mut self, source: ImageRef<'_>) -> f64
pub fn max_norm_system(&mut self, source: ImageRef<'_>) -> f64
Computes the maximum l-infinity norm of all fields in the system.
Sourcepub fn bottom_left_value(&self, src: &[f64]) -> f64
pub fn bottom_left_value(&self, src: &[f64]) -> f64
Returns the value of a function at the bottom left corner of the mesh.
pub fn oscillation_heuristic(&mut self, src: &[f64]) -> f64
pub fn oscillation_heuristic_system(&mut self, source: ImageRef<'_>) -> f64
Sourcepub fn max_norm(&mut self, src: &[f64]) -> f64
pub fn max_norm(&mut self, src: &[f64]) -> f64
Computes the l-infinity norm of a field on a mesh.
Sourcepub fn write_debug(&self, result: impl Write)
pub fn write_debug(&self, result: impl Write)
Writes a textual summary of the Mesh to a sink. This is pimrarily used to debug features of the mesh that can’t be easily represented graphically (i.e in .vtu files).
Trait Implementations§
Source§impl<const N: usize> DataSize for Mesh<N>
impl<const N: usize> DataSize for Mesh<N>
Source§const IS_DYNAMIC: bool = false
const IS_DYNAMIC: bool = false
true, the type has a heap size that can vary at runtime, depending on the actual value.Source§const STATIC_HEAP_SIZE: usize = 0
const STATIC_HEAP_SIZE: usize = 0
IS_DYNAMIC is false, this is
the total amount of heap memory occupied by the value. Otherwise this is a lower bound.Source§fn estimate_heap_size(&self) -> usize
fn estimate_heap_size(&self) -> usize
Source§impl<'de, const N: usize> Deserialize<'de> for Mesh<N>
impl<'de, const N: usize> Deserialize<'de> for Mesh<N>
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl<const N: usize> !Freeze for Mesh<N>
impl<const N: usize> RefUnwindSafe for Mesh<N>
impl<const N: usize> Send for Mesh<N>
impl<const N: usize> Sync for Mesh<N>
impl<const N: usize> Unpin for Mesh<N>
impl<const N: usize> UnsafeUnpin for Mesh<N>
impl<const N: usize> !UnwindSafe for Mesh<N>
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> DistributionExt for Twhere
T: ?Sized,
impl<T> DistributionExt for Twhere
T: ?Sized,
Source§impl<T> FmtForward for T
impl<T> FmtForward for T
Source§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.Source§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.Source§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.Source§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.Source§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.Source§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.Source§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.Source§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.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 moreSource§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
Source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Source§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 moreSource§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 moreSource§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
Source§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
Source§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.Source§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.Source§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.Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> Tap for T
impl<T> Tap for T
Source§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 moreSource§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 moreSource§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 moreSource§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 moreSource§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 moreSource§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 moreSource§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.Source§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.Source§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.Source§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.Source§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.Source§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.Source§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.