pub struct GlobalTransform(/* private fields */);
Expand description
GlobalTransform
is an affine transformation from entity-local coordinates to worldspace coordinates.
You cannot directly mutate GlobalTransform
; instead, you change an entity’s transform by manipulating
its Transform
, which indirectly causes Bevy to update its GlobalTransform
.
- To get the global transform of an entity, you should get its
GlobalTransform
. - For transform hierarchies to work correctly, you must have both a
Transform
and aGlobalTransform
.You may use theTransformBundle
to guarantee this.TransformBundle
is now deprecated.GlobalTransform
is automatically inserted wheneverTransform
is inserted.
§Transform
and GlobalTransform
Transform
transforms an entity relative to its parent’s reference frame, or relative to world space coordinates,
if it doesn’t have a Parent
.
GlobalTransform
is managed by Bevy; it is computed by successively applying the Transform
of each ancestor
entity which has a Transform. This is done automatically by Bevy-internal systems in the system set
TransformPropagate
.
This system runs during PostUpdate
. If you
update the Transform
of an entity in this schedule or after, you will notice a 1 frame lag
before the GlobalTransform
is updated.
§Examples
Implementations§
Source§impl GlobalTransform
impl GlobalTransform
Sourcepub const IDENTITY: GlobalTransform
pub const IDENTITY: GlobalTransform
An identity GlobalTransform
that maps all points in space to themselves.
Sourcepub fn compute_matrix(&self) -> Mat4
pub fn compute_matrix(&self) -> Mat4
Returns the 3d affine transformation matrix as a Mat4
.
Sourcepub fn affine(&self) -> Affine3A
pub fn affine(&self) -> Affine3A
Returns the 3d affine transformation matrix as an Affine3A
.
Examples found in repository?
326pub fn extract_colored_mesh2d(
327 mut commands: Commands,
328 mut previous_len: Local<usize>,
329 // When extracting, you must use `Extract` to mark the `SystemParam`s
330 // which should be taken from the main world.
331 query: Extract<
332 Query<(Entity, &ViewVisibility, &GlobalTransform, &Mesh2d), With<ColoredMesh2d>>,
333 >,
334 mut render_mesh_instances: ResMut<RenderColoredMesh2dInstances>,
335) {
336 let mut values = Vec::with_capacity(*previous_len);
337 for (entity, view_visibility, transform, handle) in &query {
338 if !view_visibility.get() {
339 continue;
340 }
341
342 let transforms = Mesh2dTransforms {
343 world_from_local: (&transform.affine()).into(),
344 flags: MeshFlags::empty().bits(),
345 };
346
347 values.push((entity, ColoredMesh2d));
348 render_mesh_instances.insert(
349 entity.into(),
350 RenderMesh2dInstance {
351 mesh_asset_id: handle.0.id(),
352 transforms,
353 material_bind_group_id: Material2dBindGroupId::default(),
354 automatic_batching: false,
355 },
356 );
357 }
358 *previous_len = values.len();
359 commands.insert_or_spawn_batch(values);
360}
Sourcepub fn compute_transform(&self) -> Transform
pub fn compute_transform(&self) -> Transform
Returns the transformation as a Transform
.
The transform is expected to be non-degenerate and without shearing, or the output will be invalid.
Sourcepub fn to_isometry(&self) -> Isometry3d
pub fn to_isometry(&self) -> Isometry3d
Returns the isometric part of the transformation as an isometry. Any scaling done by the transformation will be ignored.
The transform is expected to be non-degenerate and without shearing, or the output will be invalid.
Sourcepub fn reparented_to(&self, parent: &GlobalTransform) -> Transform
pub fn reparented_to(&self, parent: &GlobalTransform) -> Transform
Returns the Transform
self
would have if it was a child of an entity
with the parent
GlobalTransform
.
This is useful if you want to “reparent” an Entity
.
Say you have an entity e1
that you want to turn into a child of e2
,
but you want e1
to keep the same global transform, even after re-parenting. You would use:
#[derive(Component)]
struct ToReparent {
new_parent: Entity,
}
fn reparent_system(
mut commands: Commands,
mut targets: Query<(&mut Transform, Entity, &GlobalTransform, &ToReparent)>,
transforms: Query<&GlobalTransform>,
) {
for (mut transform, entity, initial, to_reparent) in targets.iter_mut() {
if let Ok(parent_transform) = transforms.get(to_reparent.new_parent) {
*transform = initial.reparented_to(parent_transform);
commands.entity(entity)
.remove::<ToReparent>()
.set_parent(to_reparent.new_parent);
}
}
}
The transform is expected to be non-degenerate and without shearing, or the output will be invalid.
Sourcepub fn to_scale_rotation_translation(&self) -> (Vec3, Quat, Vec3)
pub fn to_scale_rotation_translation(&self) -> (Vec3, Quat, Vec3)
Extracts scale
, rotation
and translation
from self
.
The transform is expected to be non-degenerate and without shearing, or the output will be invalid.
Examples found in repository?
106fn draw_bounds<Shape: Bounded2d + Send + Sync + 'static>(
107 q: Query<(&DrawBounds<Shape>, &GlobalTransform)>,
108 mut gizmos: Gizmos,
109) {
110 for (shape, transform) in &q {
111 let (_, rotation, translation) = transform.to_scale_rotation_translation();
112 let translation = translation.truncate();
113 let rotation = rotation.to_euler(EulerRot::XYZ).2;
114 let isometry = Isometry2d::new(translation, Rot2::radians(rotation));
115
116 let aabb = shape.0.aabb_2d(isometry);
117 gizmos.rect_2d(aabb.center(), aabb.half_size() * 2.0, RED);
118
119 let bounding_circle = shape.0.bounding_circle(isometry);
120 gizmos.circle_2d(bounding_circle.center, bounding_circle.radius(), BLUE);
121 }
122}
Sourcepub fn up(&self) -> Dir3
pub fn up(&self) -> Dir3
Return the local up vector (Y).
Examples found in repository?
13fn draw_cursor(
14 camera_query: Single<(&Camera, &GlobalTransform)>,
15 ground: Single<&GlobalTransform, With<Ground>>,
16 windows: Single<&Window>,
17 mut gizmos: Gizmos,
18) {
19 let (camera, camera_transform) = *camera_query;
20
21 let Some(cursor_position) = windows.cursor_position() else {
22 return;
23 };
24
25 // Calculate a ray pointing from the camera into the world based on the cursor's position.
26 let Ok(ray) = camera.viewport_to_world(camera_transform, cursor_position) else {
27 return;
28 };
29
30 // Calculate if and where the ray is hitting the ground plane.
31 let Some(distance) =
32 ray.intersect_plane(ground.translation(), InfinitePlane3d::new(ground.up()))
33 else {
34 return;
35 };
36 let point = ray.get_point(distance);
37
38 // Draw a circle just above the ground plane at that position.
39 gizmos.circle(
40 Isometry3d::new(
41 point + ground.up() * 0.01,
42 Quat::from_rotation_arc(Vec3::Z, ground.up().as_vec3()),
43 ),
44 0.2,
45 Color::WHITE,
46 );
47}
Sourcepub fn translation(&self) -> Vec3
pub fn translation(&self) -> Vec3
Get the translation as a Vec3
.
Examples found in repository?
122fn interact_bodies(mut query: Query<(&Mass, &GlobalTransform, &mut Acceleration)>) {
123 let mut iter = query.iter_combinations_mut();
124 while let Some([(Mass(m1), transform1, mut acc1), (Mass(m2), transform2, mut acc2)]) =
125 iter.fetch_next()
126 {
127 let delta = transform2.translation() - transform1.translation();
128 let distance_sq: f32 = delta.length_squared();
129
130 let f = GRAVITY_CONSTANT / distance_sq;
131 let force_unit_mass = delta * f;
132 acc1.0 += force_unit_mass * *m2;
133 acc2.0 -= force_unit_mass * *m1;
134 }
135}
More examples
40fn observe_on_step(
41 trigger: Trigger<OnStep>,
42 particle: Res<ParticleAssets>,
43 mut commands: Commands,
44 transforms: Query<&GlobalTransform>,
45) {
46 let translation = transforms.get(trigger.entity()).unwrap().translation();
47 let mut rng = thread_rng();
48 // Spawn a bunch of particles.
49 for _ in 0..14 {
50 let horizontal = rng.gen::<Dir2>() * rng.gen_range(8.0..12.0);
51 let vertical = rng.gen_range(0.0..4.0);
52 let size = rng.gen_range(0.2..1.0);
53 commands.queue(spawn_particle(
54 particle.mesh.clone(),
55 particle.material.clone(),
56 translation.reject_from_normalized(Vec3::Y),
57 rng.gen_range(0.2..0.6),
58 size,
59 Vec3::new(horizontal.x, vertical, horizontal.y) * 10.0,
60 ));
61 }
62}
13fn draw_cursor(
14 camera_query: Single<(&Camera, &GlobalTransform)>,
15 ground: Single<&GlobalTransform, With<Ground>>,
16 windows: Single<&Window>,
17 mut gizmos: Gizmos,
18) {
19 let (camera, camera_transform) = *camera_query;
20
21 let Some(cursor_position) = windows.cursor_position() else {
22 return;
23 };
24
25 // Calculate a ray pointing from the camera into the world based on the cursor's position.
26 let Ok(ray) = camera.viewport_to_world(camera_transform, cursor_position) else {
27 return;
28 };
29
30 // Calculate if and where the ray is hitting the ground plane.
31 let Some(distance) =
32 ray.intersect_plane(ground.translation(), InfinitePlane3d::new(ground.up()))
33 else {
34 return;
35 };
36 let point = ray.get_point(distance);
37
38 // Draw a circle just above the ground plane at that position.
39 gizmos.circle(
40 Isometry3d::new(
41 point + ground.up() * 0.01,
42 Quat::from_rotation_arc(Vec3::Z, ground.up().as_vec3()),
43 ),
44 0.2,
45 Color::WHITE,
46 );
47}
250fn example_control_system(
251 mut materials: ResMut<Assets<StandardMaterial>>,
252 controllable: Query<(&MeshMaterial3d<StandardMaterial>, &ExampleControls)>,
253 camera: Single<(&mut Camera, &mut Transform, &GlobalTransform), With<Camera3d>>,
254 mut labels: Query<(&mut Node, &ExampleLabel)>,
255 mut display: Single<&mut Text, With<ExampleDisplay>>,
256 labeled: Query<&GlobalTransform>,
257 mut state: Local<ExampleState>,
258 time: Res<Time>,
259 input: Res<ButtonInput<KeyCode>>,
260) {
261 if input.pressed(KeyCode::ArrowUp) {
262 state.alpha = (state.alpha + time.delta_secs()).min(1.0);
263 } else if input.pressed(KeyCode::ArrowDown) {
264 state.alpha = (state.alpha - time.delta_secs()).max(0.0);
265 }
266
267 if input.just_pressed(KeyCode::Space) {
268 state.unlit = !state.unlit;
269 }
270
271 let randomize_colors = input.just_pressed(KeyCode::KeyC);
272
273 for (material_handle, controls) in &controllable {
274 let material = materials.get_mut(material_handle).unwrap();
275
276 if controls.color && randomize_colors {
277 material.base_color = Srgba {
278 red: random(),
279 green: random(),
280 blue: random(),
281 alpha: state.alpha,
282 }
283 .into();
284 } else {
285 material.base_color.set_alpha(state.alpha);
286 }
287
288 if controls.unlit {
289 material.unlit = state.unlit;
290 }
291 }
292
293 let (mut camera, mut camera_transform, camera_global_transform) = camera.into_inner();
294
295 if input.just_pressed(KeyCode::KeyH) {
296 camera.hdr = !camera.hdr;
297 }
298
299 let rotation = if input.pressed(KeyCode::ArrowLeft) {
300 time.delta_secs()
301 } else if input.pressed(KeyCode::ArrowRight) {
302 -time.delta_secs()
303 } else {
304 0.0
305 };
306
307 camera_transform.rotate_around(Vec3::ZERO, Quat::from_rotation_y(rotation));
308
309 for (mut node, label) in &mut labels {
310 let world_position = labeled.get(label.entity).unwrap().translation() + Vec3::Y;
311
312 let viewport_position = camera
313 .world_to_viewport(camera_global_transform, world_position)
314 .unwrap();
315
316 node.top = Val::Px(viewport_position.y);
317 node.left = Val::Px(viewport_position.x);
318 }
319
320 display.0 = format!(
321 " HDR: {}\nAlpha: {:.2}",
322 if camera.hdr { "ON " } else { "OFF" },
323 state.alpha
324 );
325}
Sourcepub fn translation_vec3a(&self) -> Vec3A
pub fn translation_vec3a(&self) -> Vec3A
Get the translation as a Vec3A
.
Sourcepub fn scale(&self) -> Vec3
pub fn scale(&self) -> Vec3
Get the scale as a Vec3
.
The transform is expected to be non-degenerate and without shearing, or the output will be invalid.
Some of the computations overlap with to_scale_rotation_translation
, which means you should use
it instead if you also need rotation.
Sourcepub fn radius_vec3a(&self, extents: Vec3A) -> f32
pub fn radius_vec3a(&self, extents: Vec3A) -> f32
Get an upper bound of the radius from the given extents
.
Sourcepub fn transform_point(&self, point: Vec3) -> Vec3
pub fn transform_point(&self, point: Vec3) -> Vec3
Transforms the given point from local space to global space, applying shear, scale, rotation and translation.
It can be used like this:
let global_transform = GlobalTransform::from_xyz(1., 2., 3.);
let local_point = Vec3::new(1., 2., 3.);
let global_point = global_transform.transform_point(local_point);
assert_eq!(global_point, Vec3::new(2., 4., 6.));
let global_point = Vec3::new(2., 4., 6.);
let global_transform = GlobalTransform::from_xyz(1., 2., 3.);
let local_point = global_transform.affine().inverse().transform_point3(global_point);
assert_eq!(local_point, Vec3::new(1., 2., 3.))
To apply shear, scale, and rotation without applying translation, different functions are available:
let global_transform = GlobalTransform::from_xyz(1., 2., 3.);
let local_direction = Vec3::new(1., 2., 3.);
let global_direction = global_transform.affine().transform_vector3(local_direction);
assert_eq!(global_direction, Vec3::new(1., 2., 3.));
let roundtripped_local_direction = global_transform.affine().inverse().transform_vector3(global_direction);
assert_eq!(roundtripped_local_direction, local_direction);
Examples found in repository?
523fn create_cubes(
524 image_assets: Res<Assets<Image>>,
525 mut commands: Commands,
526 irradiance_volumes: Query<(&IrradianceVolume, &GlobalTransform)>,
527 voxel_cube_parents: Query<Entity, With<VoxelCubeParent>>,
528 voxel_cubes: Query<Entity, With<VoxelCube>>,
529 example_assets: Res<ExampleAssets>,
530 mut voxel_visualization_material_assets: ResMut<Assets<VoxelVisualizationMaterial>>,
531) {
532 // If voxel cubes have already been spawned, don't do anything.
533 if !voxel_cubes.is_empty() {
534 return;
535 }
536
537 let Some(voxel_cube_parent) = voxel_cube_parents.iter().next() else {
538 return;
539 };
540
541 for (irradiance_volume, global_transform) in irradiance_volumes.iter() {
542 let Some(image) = image_assets.get(&irradiance_volume.voxels) else {
543 continue;
544 };
545
546 let resolution = image.texture_descriptor.size;
547
548 let voxel_cube_material = voxel_visualization_material_assets.add(ExtendedMaterial {
549 base: StandardMaterial::from(Color::from(RED)),
550 extension: VoxelVisualizationExtension {
551 irradiance_volume_info: VoxelVisualizationIrradianceVolumeInfo {
552 world_from_voxel: VOXEL_FROM_WORLD.inverse(),
553 voxel_from_world: VOXEL_FROM_WORLD,
554 resolution: uvec3(
555 resolution.width,
556 resolution.height,
557 resolution.depth_or_array_layers,
558 ),
559 intensity: IRRADIANCE_VOLUME_INTENSITY,
560 },
561 },
562 });
563
564 let scale = vec3(
565 1.0 / resolution.width as f32,
566 1.0 / resolution.height as f32,
567 1.0 / resolution.depth_or_array_layers as f32,
568 );
569
570 // Spawn a cube for each voxel.
571 for z in 0..resolution.depth_or_array_layers {
572 for y in 0..resolution.height {
573 for x in 0..resolution.width {
574 let uvw = (uvec3(x, y, z).as_vec3() + 0.5) * scale - 0.5;
575 let pos = global_transform.transform_point(uvw);
576 let voxel_cube = commands
577 .spawn((
578 Mesh3d(example_assets.voxel_cube.clone()),
579 MeshMaterial3d(voxel_cube_material.clone()),
580 Transform::from_scale(Vec3::splat(VOXEL_CUBE_SCALE))
581 .with_translation(pos),
582 ))
583 .insert(VoxelCube)
584 .insert(NotShadowCaster)
585 .id();
586
587 commands.entity(voxel_cube_parent).add_child(voxel_cube);
588 }
589 }
590 }
591 }
592}
Sourcepub fn mul_transform(&self, transform: Transform) -> GlobalTransform
pub fn mul_transform(&self, transform: Transform) -> GlobalTransform
Multiplies self
with transform
component by component, returning the
resulting GlobalTransform
Trait Implementations§
Source§impl Clone for GlobalTransform
impl Clone for GlobalTransform
Source§fn clone(&self) -> GlobalTransform
fn clone(&self) -> GlobalTransform
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Component for GlobalTransform
impl Component for GlobalTransform
Source§const STORAGE_TYPE: StorageType = bevy_ecs::component::StorageType::Table
const STORAGE_TYPE: StorageType = bevy_ecs::component::StorageType::Table
Source§fn register_required_components(
requiree: ComponentId,
components: &mut Components,
storages: &mut Storages,
required_components: &mut RequiredComponents,
inheritance_depth: u16,
)
fn register_required_components( requiree: ComponentId, components: &mut Components, storages: &mut Storages, required_components: &mut RequiredComponents, inheritance_depth: u16, )
Source§fn register_component_hooks(hooks: &mut ComponentHooks)
fn register_component_hooks(hooks: &mut ComponentHooks)
ComponentHooks
.Source§impl Debug for GlobalTransform
impl Debug for GlobalTransform
Source§impl Default for GlobalTransform
impl Default for GlobalTransform
Source§fn default() -> GlobalTransform
fn default() -> GlobalTransform
Source§impl<'de> Deserialize<'de> for GlobalTransform
impl<'de> Deserialize<'de> for GlobalTransform
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<GlobalTransform, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<GlobalTransform, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
Source§impl From<Affine3A> for GlobalTransform
impl From<Affine3A> for GlobalTransform
Source§fn from(value: Affine3A) -> GlobalTransform
fn from(value: Affine3A) -> GlobalTransform
Source§impl From<GlobalTransform> for Transform
The transform is expected to be non-degenerate and without shearing, or the output
will be invalid.
impl From<GlobalTransform> for Transform
The transform is expected to be non-degenerate and without shearing, or the output will be invalid.
Source§fn from(transform: GlobalTransform) -> Transform
fn from(transform: GlobalTransform) -> Transform
Source§impl From<Mat4> for GlobalTransform
impl From<Mat4> for GlobalTransform
Source§fn from(world_from_local: Mat4) -> GlobalTransform
fn from(world_from_local: Mat4) -> GlobalTransform
Source§impl From<Transform> for GlobalTransform
impl From<Transform> for GlobalTransform
Source§fn from(transform: Transform) -> GlobalTransform
fn from(transform: Transform) -> GlobalTransform
Source§impl FromArg for &'static GlobalTransformwhere
GlobalTransform: Any + Send + Sync,
Affine3A: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
impl FromArg for &'static GlobalTransformwhere
GlobalTransform: Any + Send + Sync,
Affine3A: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
Source§impl FromArg for &'static mut GlobalTransformwhere
GlobalTransform: Any + Send + Sync,
Affine3A: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
impl FromArg for &'static mut GlobalTransformwhere
GlobalTransform: Any + Send + Sync,
Affine3A: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
Source§impl FromArg for GlobalTransformwhere
GlobalTransform: Any + Send + Sync,
Affine3A: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
impl FromArg for GlobalTransformwhere
GlobalTransform: Any + Send + Sync,
Affine3A: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
Source§impl FromReflect for GlobalTransformwhere
GlobalTransform: Any + Send + Sync,
Affine3A: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
impl FromReflect for GlobalTransformwhere
GlobalTransform: Any + Send + Sync,
Affine3A: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
Source§fn from_reflect(
reflect: &(dyn PartialReflect + 'static),
) -> Option<GlobalTransform>
fn from_reflect( reflect: &(dyn PartialReflect + 'static), ) -> Option<GlobalTransform>
Self
from a reflected value.Source§fn take_from_reflect(
reflect: Box<dyn PartialReflect>,
) -> Result<Self, Box<dyn PartialReflect>>
fn take_from_reflect( reflect: Box<dyn PartialReflect>, ) -> Result<Self, Box<dyn PartialReflect>>
Self
using,
constructing the value using from_reflect
if that fails. Read moreSource§impl GetOwnership for &GlobalTransformwhere
GlobalTransform: Any + Send + Sync,
Affine3A: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
impl GetOwnership for &GlobalTransformwhere
GlobalTransform: Any + Send + Sync,
Affine3A: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
Source§impl GetOwnership for &mut GlobalTransformwhere
GlobalTransform: Any + Send + Sync,
Affine3A: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
impl GetOwnership for &mut GlobalTransformwhere
GlobalTransform: Any + Send + Sync,
Affine3A: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
Source§impl GetOwnership for GlobalTransformwhere
GlobalTransform: Any + Send + Sync,
Affine3A: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
impl GetOwnership for GlobalTransformwhere
GlobalTransform: Any + Send + Sync,
Affine3A: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
Source§impl GetTypeRegistration for GlobalTransformwhere
GlobalTransform: Any + Send + Sync,
Affine3A: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
impl GetTypeRegistration for GlobalTransformwhere
GlobalTransform: Any + Send + Sync,
Affine3A: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
Source§fn get_type_registration() -> TypeRegistration
fn get_type_registration() -> TypeRegistration
TypeRegistration
for this type.Source§fn register_type_dependencies(registry: &mut TypeRegistry)
fn register_type_dependencies(registry: &mut TypeRegistry)
Source§impl IntoReturn for &GlobalTransformwhere
GlobalTransform: Any + Send + Sync,
Affine3A: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
impl IntoReturn for &GlobalTransformwhere
GlobalTransform: Any + Send + Sync,
Affine3A: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
Source§fn into_return<'into_return>(self) -> Return<'into_return>where
&GlobalTransform: 'into_return,
fn into_return<'into_return>(self) -> Return<'into_return>where
&GlobalTransform: 'into_return,
Source§impl IntoReturn for &mut GlobalTransformwhere
GlobalTransform: Any + Send + Sync,
Affine3A: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
impl IntoReturn for &mut GlobalTransformwhere
GlobalTransform: Any + Send + Sync,
Affine3A: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
Source§fn into_return<'into_return>(self) -> Return<'into_return>where
&mut GlobalTransform: 'into_return,
fn into_return<'into_return>(self) -> Return<'into_return>where
&mut GlobalTransform: 'into_return,
Source§impl IntoReturn for GlobalTransformwhere
GlobalTransform: Any + Send + Sync,
Affine3A: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
impl IntoReturn for GlobalTransformwhere
GlobalTransform: Any + Send + Sync,
Affine3A: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
Source§fn into_return<'into_return>(self) -> Return<'into_return>where
GlobalTransform: 'into_return,
fn into_return<'into_return>(self) -> Return<'into_return>where
GlobalTransform: 'into_return,
Source§impl Mul<GlobalTransform> for Transform
impl Mul<GlobalTransform> for Transform
Source§type Output = GlobalTransform
type Output = GlobalTransform
*
operator.Source§fn mul(
self,
global_transform: GlobalTransform,
) -> <Transform as Mul<GlobalTransform>>::Output
fn mul( self, global_transform: GlobalTransform, ) -> <Transform as Mul<GlobalTransform>>::Output
*
operation. Read moreSource§impl Mul<Transform> for GlobalTransform
impl Mul<Transform> for GlobalTransform
Source§impl Mul<Vec3> for GlobalTransform
impl Mul<Vec3> for GlobalTransform
Source§impl Mul for GlobalTransform
impl Mul for GlobalTransform
Source§type Output = GlobalTransform
type Output = GlobalTransform
*
operator.Source§fn mul(
self,
global_transform: GlobalTransform,
) -> <GlobalTransform as Mul>::Output
fn mul( self, global_transform: GlobalTransform, ) -> <GlobalTransform as Mul>::Output
*
operation. Read moreSource§impl PartialEq for GlobalTransform
impl PartialEq for GlobalTransform
Source§impl PartialReflect for GlobalTransformwhere
GlobalTransform: Any + Send + Sync,
Affine3A: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
impl PartialReflect for GlobalTransformwhere
GlobalTransform: Any + Send + Sync,
Affine3A: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
Source§fn get_represented_type_info(&self) -> Option<&'static TypeInfo>
fn get_represented_type_info(&self) -> Option<&'static TypeInfo>
Source§fn clone_value(&self) -> Box<dyn PartialReflect>
fn clone_value(&self) -> Box<dyn PartialReflect>
Reflect
trait object. Read moreSource§fn try_apply(
&mut self,
value: &(dyn PartialReflect + 'static),
) -> Result<(), ApplyError>
fn try_apply( &mut self, value: &(dyn PartialReflect + 'static), ) -> Result<(), ApplyError>
Source§fn reflect_kind(&self) -> ReflectKind
fn reflect_kind(&self) -> ReflectKind
Source§fn reflect_ref(&self) -> ReflectRef<'_>
fn reflect_ref(&self) -> ReflectRef<'_>
Source§fn reflect_mut(&mut self) -> ReflectMut<'_>
fn reflect_mut(&mut self) -> ReflectMut<'_>
Source§fn reflect_owned(self: Box<GlobalTransform>) -> ReflectOwned
fn reflect_owned(self: Box<GlobalTransform>) -> ReflectOwned
Source§fn try_into_reflect(
self: Box<GlobalTransform>,
) -> Result<Box<dyn Reflect>, Box<dyn PartialReflect>>
fn try_into_reflect( self: Box<GlobalTransform>, ) -> Result<Box<dyn Reflect>, Box<dyn PartialReflect>>
Source§fn try_as_reflect(&self) -> Option<&(dyn Reflect + 'static)>
fn try_as_reflect(&self) -> Option<&(dyn Reflect + 'static)>
Source§fn try_as_reflect_mut(&mut self) -> Option<&mut (dyn Reflect + 'static)>
fn try_as_reflect_mut(&mut self) -> Option<&mut (dyn Reflect + 'static)>
Source§fn into_partial_reflect(self: Box<GlobalTransform>) -> Box<dyn PartialReflect>
fn into_partial_reflect(self: Box<GlobalTransform>) -> Box<dyn PartialReflect>
Source§fn as_partial_reflect(&self) -> &(dyn PartialReflect + 'static)
fn as_partial_reflect(&self) -> &(dyn PartialReflect + 'static)
Source§fn as_partial_reflect_mut(&mut self) -> &mut (dyn PartialReflect + 'static)
fn as_partial_reflect_mut(&mut self) -> &mut (dyn PartialReflect + 'static)
Source§fn reflect_partial_eq(
&self,
value: &(dyn PartialReflect + 'static),
) -> Option<bool>
fn reflect_partial_eq( &self, value: &(dyn PartialReflect + 'static), ) -> Option<bool>
Source§fn debug(&self, f: &mut Formatter<'_>) -> Result<(), Error>
fn debug(&self, f: &mut Formatter<'_>) -> Result<(), Error>
Source§fn apply(&mut self, value: &(dyn PartialReflect + 'static))
fn apply(&mut self, value: &(dyn PartialReflect + 'static))
Source§fn reflect_hash(&self) -> Option<u64>
fn reflect_hash(&self) -> Option<u64>
Source§fn serializable(&self) -> Option<Serializable<'_>>
fn serializable(&self) -> Option<Serializable<'_>>
Source§fn is_dynamic(&self) -> bool
fn is_dynamic(&self) -> bool
Source§impl Reflect for GlobalTransformwhere
GlobalTransform: Any + Send + Sync,
Affine3A: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
impl Reflect for GlobalTransformwhere
GlobalTransform: Any + Send + Sync,
Affine3A: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
Source§fn into_any(self: Box<GlobalTransform>) -> Box<dyn Any>
fn into_any(self: Box<GlobalTransform>) -> Box<dyn Any>
Box<dyn Any>
. Read moreSource§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut dyn Any
. Read moreSource§fn into_reflect(self: Box<GlobalTransform>) -> Box<dyn Reflect>
fn into_reflect(self: Box<GlobalTransform>) -> Box<dyn Reflect>
Source§fn as_reflect(&self) -> &(dyn Reflect + 'static)
fn as_reflect(&self) -> &(dyn Reflect + 'static)
Source§fn as_reflect_mut(&mut self) -> &mut (dyn Reflect + 'static)
fn as_reflect_mut(&mut self) -> &mut (dyn Reflect + 'static)
Source§impl Serialize for GlobalTransform
impl Serialize for GlobalTransform
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
Source§impl TransformPoint for GlobalTransform
impl TransformPoint for GlobalTransform
Source§impl TupleStruct for GlobalTransformwhere
GlobalTransform: Any + Send + Sync,
Affine3A: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
impl TupleStruct for GlobalTransformwhere
GlobalTransform: Any + Send + Sync,
Affine3A: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
Source§fn field(&self, index: usize) -> Option<&(dyn PartialReflect + 'static)>
fn field(&self, index: usize) -> Option<&(dyn PartialReflect + 'static)>
index
as a
&dyn Reflect
.Source§fn field_mut(
&mut self,
index: usize,
) -> Option<&mut (dyn PartialReflect + 'static)>
fn field_mut( &mut self, index: usize, ) -> Option<&mut (dyn PartialReflect + 'static)>
index
as a &mut dyn Reflect
.Source§fn iter_fields(&self) -> TupleStructFieldIter<'_> ⓘ
fn iter_fields(&self) -> TupleStructFieldIter<'_> ⓘ
Source§fn clone_dynamic(&self) -> DynamicTupleStruct
fn clone_dynamic(&self) -> DynamicTupleStruct
DynamicTupleStruct
.Source§fn get_represented_tuple_struct_info(&self) -> Option<&'static TupleStructInfo>
fn get_represented_tuple_struct_info(&self) -> Option<&'static TupleStructInfo>
None
if TypeInfo
is not available.Source§impl TypePath for GlobalTransform
impl TypePath for GlobalTransform
Source§fn type_path() -> &'static str
fn type_path() -> &'static str
Source§fn short_type_path() -> &'static str
fn short_type_path() -> &'static str
Source§fn type_ident() -> Option<&'static str>
fn type_ident() -> Option<&'static str>
Source§fn crate_name() -> Option<&'static str>
fn crate_name() -> Option<&'static str>
Source§impl Typed for GlobalTransformwhere
GlobalTransform: Any + Send + Sync,
Affine3A: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
impl Typed for GlobalTransformwhere
GlobalTransform: Any + Send + Sync,
Affine3A: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
impl Copy for GlobalTransform
impl StructuralPartialEq for GlobalTransform
Auto Trait Implementations§
impl Freeze for GlobalTransform
impl RefUnwindSafe for GlobalTransform
impl Send for GlobalTransform
impl Sync for GlobalTransform
impl Unpin for GlobalTransform
impl UnwindSafe for GlobalTransform
Blanket Implementations§
Source§impl<T, U> AsBindGroupShaderType<U> for T
impl<T, U> AsBindGroupShaderType<U> for T
Source§fn as_bind_group_shader_type(&self, _images: &RenderAssets<GpuImage>) -> U
fn as_bind_group_shader_type(&self, _images: &RenderAssets<GpuImage>) -> U
T
ShaderType
for self
. When used in AsBindGroup
derives, it is safe to assume that all images in self
exist.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<C> Bundle for Cwhere
C: Component,
impl<C> Bundle for Cwhere
C: Component,
fn component_ids( components: &mut Components, storages: &mut Storages, ids: &mut impl FnMut(ComponentId), )
unsafe fn from_components<T, F>(ctx: &mut T, func: &mut F) -> C
Source§fn register_required_components(
components: &mut Components,
storages: &mut Storages,
required_components: &mut RequiredComponents,
)
fn register_required_components( components: &mut Components, storages: &mut Storages, required_components: &mut RequiredComponents, )
Bundle
.Source§fn get_component_ids(
components: &Components,
ids: &mut impl FnMut(Option<ComponentId>),
)
fn get_component_ids( components: &Components, ids: &mut impl FnMut(Option<ComponentId>), )
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§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
.Source§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
.Source§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.Source§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.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<C> DynamicBundle for Cwhere
C: Component,
impl<C> DynamicBundle for Cwhere
C: Component,
fn get_components(self, func: &mut impl FnMut(StorageType, OwningPtr<'_>))
Source§impl<T> DynamicTypePath for Twhere
T: TypePath,
impl<T> DynamicTypePath for Twhere
T: TypePath,
Source§fn reflect_type_path(&self) -> &str
fn reflect_type_path(&self) -> &str
TypePath::type_path
.Source§fn reflect_short_type_path(&self) -> &str
fn reflect_short_type_path(&self) -> &str
Source§fn reflect_type_ident(&self) -> Option<&str>
fn reflect_type_ident(&self) -> Option<&str>
TypePath::type_ident
.Source§fn reflect_crate_name(&self) -> Option<&str>
fn reflect_crate_name(&self) -> Option<&str>
TypePath::crate_name
.Source§fn reflect_module_path(&self) -> Option<&str>
fn reflect_module_path(&self) -> Option<&str>
Source§impl<T> DynamicTyped for Twhere
T: Typed,
impl<T> DynamicTyped for Twhere
T: Typed,
Source§fn reflect_type_info(&self) -> &'static TypeInfo
fn reflect_type_info(&self) -> &'static TypeInfo
Typed::type_info
.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<S> FromSample<S> for S
impl<S> FromSample<S> for S
fn from_sample_(s: S) -> S
Source§impl<T> FromWorld for Twhere
T: Default,
impl<T> FromWorld for Twhere
T: Default,
Source§fn from_world(_world: &mut World) -> T
fn from_world(_world: &mut World) -> T
Creates Self
using default()
.
Source§impl<T> GetPath for T
impl<T> GetPath for T
Source§fn reflect_path<'p>(
&self,
path: impl ReflectPath<'p>,
) -> Result<&(dyn PartialReflect + 'static), ReflectPathError<'p>>
fn reflect_path<'p>( &self, path: impl ReflectPath<'p>, ) -> Result<&(dyn PartialReflect + 'static), ReflectPathError<'p>>
path
. Read moreSource§fn reflect_path_mut<'p>(
&mut self,
path: impl ReflectPath<'p>,
) -> Result<&mut (dyn PartialReflect + 'static), ReflectPathError<'p>>
fn reflect_path_mut<'p>( &mut self, path: impl ReflectPath<'p>, ) -> Result<&mut (dyn PartialReflect + 'static), ReflectPathError<'p>>
path
. Read moreSource§fn path<'p, T>(
&self,
path: impl ReflectPath<'p>,
) -> Result<&T, ReflectPathError<'p>>where
T: Reflect,
fn path<'p, T>(
&self,
path: impl ReflectPath<'p>,
) -> Result<&T, ReflectPathError<'p>>where
T: Reflect,
path
. Read moreSource§fn path_mut<'p, T>(
&mut self,
path: impl ReflectPath<'p>,
) -> Result<&mut T, ReflectPathError<'p>>where
T: Reflect,
fn path_mut<'p, T>(
&mut self,
path: impl ReflectPath<'p>,
) -> Result<&mut T, ReflectPathError<'p>>where
T: Reflect,
path
. Read moreSource§impl<S> GetTupleStructField for Swhere
S: TupleStruct,
impl<S> GetTupleStructField for Swhere
S: TupleStruct,
Source§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> ⓘ
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<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<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<R, P> ReadPrimitive<R> for P
impl<R, P> ReadPrimitive<R> for P
Source§fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
ReadEndian::read_from_little_endian()
.Source§impl<T> Serialize for T
impl<T> Serialize for T
fn erased_serialize(&self, serializer: &mut dyn Serializer) -> Result<(), Error>
fn do_erased_serialize( &self, serializer: &mut dyn Serializer, ) -> Result<(), ErrorImpl>
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.