Enum Msaa

Source
pub enum Msaa {
    Off = 1,
    Sample2 = 2,
    Sample4 = 4,
    Sample8 = 8,
}
Expand description

Component for configuring the number of samples for Multi-Sample Anti-Aliasing for a Camera.

Defaults to 4 samples. A higher number of samples results in smoother edges.

Some advanced rendering features may require that MSAA is disabled.

Note that the web currently only supports 1 or 4 samples.

Variants§

§

Off = 1

§

Sample2 = 2

§

Sample4 = 4

§

Sample8 = 8

Implementations§

Source§

impl Msaa

Source

pub fn samples(&self) -> u32

Examples found in repository?
examples/shader/custom_shader_instancing.rs (line 145)
126fn queue_custom(
127    transparent_3d_draw_functions: Res<DrawFunctions<Transparent3d>>,
128    custom_pipeline: Res<CustomPipeline>,
129    mut pipelines: ResMut<SpecializedMeshPipelines<CustomPipeline>>,
130    pipeline_cache: Res<PipelineCache>,
131    meshes: Res<RenderAssets<RenderMesh>>,
132    render_mesh_instances: Res<RenderMeshInstances>,
133    material_meshes: Query<(Entity, &MainEntity), With<InstanceMaterialData>>,
134    mut transparent_render_phases: ResMut<ViewSortedRenderPhases<Transparent3d>>,
135    views: Query<(&ExtractedView, &Msaa)>,
136) {
137    let draw_custom = transparent_3d_draw_functions.read().id::<DrawCustom>();
138
139    for (view, msaa) in &views {
140        let Some(transparent_phase) = transparent_render_phases.get_mut(&view.retained_view_entity)
141        else {
142            continue;
143        };
144
145        let msaa_key = MeshPipelineKey::from_msaa_samples(msaa.samples());
146
147        let view_key = msaa_key | MeshPipelineKey::from_hdr(view.hdr);
148        let rangefinder = view.rangefinder3d();
149        for (entity, main_entity) in &material_meshes {
150            let Some(mesh_instance) = render_mesh_instances.render_mesh_queue_data(*main_entity)
151            else {
152                continue;
153            };
154            let Some(mesh) = meshes.get(mesh_instance.mesh_asset_id) else {
155                continue;
156            };
157            let key =
158                view_key | MeshPipelineKey::from_primitive_topology(mesh.primitive_topology());
159            let pipeline = pipelines
160                .specialize(&pipeline_cache, &custom_pipeline, key, &mesh.layout)
161                .unwrap();
162            transparent_phase.add(Transparent3d {
163                entity: (entity, *main_entity),
164                pipeline,
165                draw_function: draw_custom,
166                distance: rangefinder.distance_translation(&mesh_instance.translation),
167                batch_range: 0..1,
168                extra_index: PhaseItemExtraIndex::None,
169                indexed: true,
170            });
171        }
172    }
173}
More examples
Hide additional examples
examples/shader/custom_phase_item.rs (line 343)
292    fn specialize(&self, msaa: Self::Key) -> RenderPipelineDescriptor {
293        RenderPipelineDescriptor {
294            label: Some("custom render pipeline".into()),
295            layout: vec![],
296            push_constant_ranges: vec![],
297            vertex: VertexState {
298                shader: self.shader.clone(),
299                shader_defs: vec![],
300                entry_point: "vertex".into(),
301                buffers: vec![VertexBufferLayout {
302                    array_stride: size_of::<Vertex>() as u64,
303                    step_mode: VertexStepMode::Vertex,
304                    // This needs to match the layout of [`Vertex`].
305                    attributes: vec![
306                        VertexAttribute {
307                            format: VertexFormat::Float32x3,
308                            offset: 0,
309                            shader_location: 0,
310                        },
311                        VertexAttribute {
312                            format: VertexFormat::Float32x3,
313                            offset: 16,
314                            shader_location: 1,
315                        },
316                    ],
317                }],
318            },
319            fragment: Some(FragmentState {
320                shader: self.shader.clone(),
321                shader_defs: vec![],
322                entry_point: "fragment".into(),
323                targets: vec![Some(ColorTargetState {
324                    // Ordinarily, you'd want to check whether the view has the
325                    // HDR format and substitute the appropriate texture format
326                    // here, but we omit that for simplicity.
327                    format: TextureFormat::bevy_default(),
328                    blend: None,
329                    write_mask: ColorWrites::ALL,
330                })],
331            }),
332            primitive: PrimitiveState::default(),
333            // Note that if your view has no depth buffer this will need to be
334            // changed.
335            depth_stencil: Some(DepthStencilState {
336                format: CORE_3D_DEPTH_FORMAT,
337                depth_write_enabled: false,
338                depth_compare: CompareFunction::Always,
339                stencil: default(),
340                bias: default(),
341            }),
342            multisample: MultisampleState {
343                count: msaa.samples(),
344                mask: !0,
345                alpha_to_coverage_enabled: false,
346            },
347            zero_initialize_workgroup_memory: false,
348        }
349    }
examples/2d/mesh2d_manual.rs (line 397)
375pub fn queue_colored_mesh2d(
376    transparent_draw_functions: Res<DrawFunctions<Transparent2d>>,
377    colored_mesh2d_pipeline: Res<ColoredMesh2dPipeline>,
378    mut pipelines: ResMut<SpecializedRenderPipelines<ColoredMesh2dPipeline>>,
379    pipeline_cache: Res<PipelineCache>,
380    render_meshes: Res<RenderAssets<RenderMesh>>,
381    render_mesh_instances: Res<RenderColoredMesh2dInstances>,
382    mut transparent_render_phases: ResMut<ViewSortedRenderPhases<Transparent2d>>,
383    views: Query<(&RenderVisibleEntities, &ExtractedView, &Msaa)>,
384) {
385    if render_mesh_instances.is_empty() {
386        return;
387    }
388    // Iterate each view (a camera is a view)
389    for (visible_entities, view, msaa) in &views {
390        let Some(transparent_phase) = transparent_render_phases.get_mut(&view.retained_view_entity)
391        else {
392            continue;
393        };
394
395        let draw_colored_mesh2d = transparent_draw_functions.read().id::<DrawColoredMesh2d>();
396
397        let mesh_key = Mesh2dPipelineKey::from_msaa_samples(msaa.samples())
398            | Mesh2dPipelineKey::from_hdr(view.hdr);
399
400        // Queue all entities visible to that view
401        for (render_entity, visible_entity) in visible_entities.iter::<Mesh2d>() {
402            if let Some(mesh_instance) = render_mesh_instances.get(visible_entity) {
403                let mesh2d_handle = mesh_instance.mesh_asset_id;
404                let mesh2d_transforms = &mesh_instance.transforms;
405                // Get our specialized pipeline
406                let mut mesh2d_key = mesh_key;
407                let Some(mesh) = render_meshes.get(mesh2d_handle) else {
408                    continue;
409                };
410                mesh2d_key |= Mesh2dPipelineKey::from_primitive_topology(mesh.primitive_topology());
411
412                let pipeline_id =
413                    pipelines.specialize(&pipeline_cache, &colored_mesh2d_pipeline, mesh2d_key);
414
415                let mesh_z = mesh2d_transforms.world_from_local.translation.z;
416                transparent_phase.add(Transparent2d {
417                    entity: (*render_entity, *visible_entity),
418                    draw_function: draw_colored_mesh2d,
419                    pipeline: pipeline_id,
420                    // The 2d render items are sorted according to their z value before rendering,
421                    // in order to get correct transparency
422                    sort_key: FloatOrd(mesh_z),
423                    // This material is not batched
424                    batch_range: 0..1,
425                    extra_index: PhaseItemExtraIndex::None,
426                    extracted_index: usize::MAX,
427                    indexed: mesh.indexed(),
428                });
429            }
430        }
431    }
432}
examples/shader/custom_render_phase.rs (line 519)
500fn queue_custom_meshes(
501    custom_draw_functions: Res<DrawFunctions<Stencil3d>>,
502    mut pipelines: ResMut<SpecializedMeshPipelines<StencilPipeline>>,
503    pipeline_cache: Res<PipelineCache>,
504    custom_draw_pipeline: Res<StencilPipeline>,
505    render_meshes: Res<RenderAssets<RenderMesh>>,
506    render_mesh_instances: Res<RenderMeshInstances>,
507    mut custom_render_phases: ResMut<ViewSortedRenderPhases<Stencil3d>>,
508    mut views: Query<(&ExtractedView, &RenderVisibleEntities, &Msaa)>,
509    has_marker: Query<(), With<DrawStencil>>,
510) {
511    for (view, visible_entities, msaa) in &mut views {
512        let Some(custom_phase) = custom_render_phases.get_mut(&view.retained_view_entity) else {
513            continue;
514        };
515        let draw_custom = custom_draw_functions.read().id::<DrawMesh3dStencil>();
516
517        // Create the key based on the view.
518        // In this case we only care about MSAA and HDR
519        let view_key = MeshPipelineKey::from_msaa_samples(msaa.samples())
520            | MeshPipelineKey::from_hdr(view.hdr);
521
522        let rangefinder = view.rangefinder3d();
523        // Since our phase can work on any 3d mesh we can reuse the default mesh 3d filter
524        for (render_entity, visible_entity) in visible_entities.iter::<Mesh3d>() {
525            // We only want meshes with the marker component to be queued to our phase.
526            if has_marker.get(*render_entity).is_err() {
527                continue;
528            }
529            let Some(mesh_instance) = render_mesh_instances.render_mesh_queue_data(*visible_entity)
530            else {
531                continue;
532            };
533            let Some(mesh) = render_meshes.get(mesh_instance.mesh_asset_id) else {
534                continue;
535            };
536
537            // Specialize the key for the current mesh entity
538            // For this example we only specialize based on the mesh topology
539            // but you could have more complex keys and that's where you'd need to create those keys
540            let mut mesh_key = view_key;
541            mesh_key |= MeshPipelineKey::from_primitive_topology(mesh.primitive_topology());
542
543            let pipeline_id = pipelines.specialize(
544                &pipeline_cache,
545                &custom_draw_pipeline,
546                mesh_key,
547                &mesh.layout,
548            );
549            let pipeline_id = match pipeline_id {
550                Ok(id) => id,
551                Err(err) => {
552                    error!("{}", err);
553                    continue;
554                }
555            };
556            let distance = rangefinder.distance_translation(&mesh_instance.translation);
557            // At this point we have all the data we need to create a phase item and add it to our
558            // phase
559            custom_phase.add(Stencil3d {
560                // Sort the data based on the distance to the view
561                sort_key: FloatOrd(distance),
562                entity: (*render_entity, *visible_entity),
563                pipeline: pipeline_id,
564                draw_function: draw_custom,
565                // Sorted phase items aren't batched
566                batch_range: 0..1,
567                extra_index: PhaseItemExtraIndex::None,
568                indexed: mesh.indexed(),
569            });
570        }
571    }
572}
examples/shader/specialized_mesh_pipeline.rs (line 343)
274fn queue_custom_mesh_pipeline(
275    pipeline_cache: Res<PipelineCache>,
276    custom_mesh_pipeline: Res<CustomMeshPipeline>,
277    (mut opaque_render_phases, opaque_draw_functions): (
278        ResMut<ViewBinnedRenderPhases<Opaque3d>>,
279        Res<DrawFunctions<Opaque3d>>,
280    ),
281    mut specialized_mesh_pipelines: ResMut<SpecializedMeshPipelines<CustomMeshPipeline>>,
282    views: Query<(
283        &RenderVisibleEntities,
284        &ExtractedView,
285        &Msaa,
286        Has<NoIndirectDrawing>,
287        Has<OcclusionCulling>,
288    )>,
289    (render_meshes, render_mesh_instances): (
290        Res<RenderAssets<RenderMesh>>,
291        Res<RenderMeshInstances>,
292    ),
293    param: StaticSystemParam<<MeshPipeline as GetBatchData>::Param>,
294    mut phase_batched_instance_buffers: ResMut<
295        PhaseBatchedInstanceBuffers<Opaque3d, <MeshPipeline as GetBatchData>::BufferData>,
296    >,
297    mut phase_indirect_parameters_buffers: ResMut<PhaseIndirectParametersBuffers<Opaque3d>>,
298    mut change_tick: Local<Tick>,
299) {
300    let system_param_item = param.into_inner();
301
302    let UntypedPhaseBatchedInstanceBuffers {
303        ref mut data_buffer,
304        ref mut work_item_buffers,
305        ref mut late_indexed_indirect_parameters_buffer,
306        ref mut late_non_indexed_indirect_parameters_buffer,
307        ..
308    } = phase_batched_instance_buffers.buffers;
309
310    // Get the id for our custom draw function
311    let draw_function_id = opaque_draw_functions
312        .read()
313        .id::<DrawSpecializedPipelineCommands>();
314
315    // Render phases are per-view, so we need to iterate over all views so that
316    // the entity appears in them. (In this example, we have only one view, but
317    // it's good practice to loop over all views anyway.)
318    for (view_visible_entities, view, msaa, no_indirect_drawing, gpu_occlusion_culling) in
319        views.iter()
320    {
321        let Some(opaque_phase) = opaque_render_phases.get_mut(&view.retained_view_entity) else {
322            continue;
323        };
324
325        // Create *work item buffers* if necessary. Work item buffers store the
326        // indices of meshes that are to be rendered when indirect drawing is
327        // enabled.
328        let work_item_buffer = gpu_preprocessing::get_or_create_work_item_buffer::<Opaque3d>(
329            work_item_buffers,
330            view.retained_view_entity,
331            no_indirect_drawing,
332            gpu_occlusion_culling,
333        );
334
335        // Initialize those work item buffers in preparation for this new frame.
336        gpu_preprocessing::init_work_item_buffers(
337            work_item_buffer,
338            late_indexed_indirect_parameters_buffer,
339            late_non_indexed_indirect_parameters_buffer,
340        );
341
342        // Create the key based on the view. In this case we only care about MSAA and HDR
343        let view_key = MeshPipelineKey::from_msaa_samples(msaa.samples())
344            | MeshPipelineKey::from_hdr(view.hdr);
345
346        // Set up a slot to hold information about the batch set we're going to
347        // create. If there are any of our custom meshes in the scene, we'll
348        // need this information in order for Bevy to kick off the rendering.
349        let mut mesh_batch_set_info = None;
350
351        // Find all the custom rendered entities that are visible from this
352        // view.
353        for &(render_entity, visible_entity) in
354            view_visible_entities.get::<CustomRenderedEntity>().iter()
355        {
356            // Get the mesh instance
357            let Some(mesh_instance) = render_mesh_instances.render_mesh_queue_data(visible_entity)
358            else {
359                continue;
360            };
361
362            // Get the mesh data
363            let Some(mesh) = render_meshes.get(mesh_instance.mesh_asset_id) else {
364                continue;
365            };
366
367            // Specialize the key for the current mesh entity
368            // For this example we only specialize based on the mesh topology
369            // but you could have more complex keys and that's where you'd need to create those keys
370            let mut mesh_key = view_key;
371            mesh_key |= MeshPipelineKey::from_primitive_topology(mesh.primitive_topology());
372
373            // Initialize the batch set information if this was the first custom
374            // mesh we saw. We'll need that information later to create the
375            // batch set.
376            if mesh_batch_set_info.is_none() {
377                mesh_batch_set_info = Some(MeshBatchSetInfo {
378                    indirect_parameters_index: phase_indirect_parameters_buffers
379                        .buffers
380                        .allocate(mesh.indexed(), 1),
381                    is_indexed: mesh.indexed(),
382                });
383            }
384            let mesh_info = mesh_batch_set_info.unwrap();
385
386            // Allocate some input and output indices. We'll need these to
387            // create the *work item* below.
388            let Some(input_index) =
389                MeshPipeline::get_binned_index(&system_param_item, visible_entity)
390            else {
391                continue;
392            };
393            let output_index = data_buffer.add() as u32;
394
395            // Finally, we can specialize the pipeline based on the key
396            let pipeline_id = specialized_mesh_pipelines
397                .specialize(
398                    &pipeline_cache,
399                    &custom_mesh_pipeline,
400                    mesh_key,
401                    &mesh.layout,
402                )
403                // This should never with this example, but if your pipeline specialization
404                // can fail you need to handle the error here
405                .expect("Failed to specialize mesh pipeline");
406
407            // Bump the change tick so that Bevy is forced to rebuild the bin.
408            let next_change_tick = change_tick.get() + 1;
409            change_tick.set(next_change_tick);
410
411            // Add the mesh with our specialized pipeline
412            opaque_phase.add(
413                Opaque3dBatchSetKey {
414                    draw_function: draw_function_id,
415                    pipeline: pipeline_id,
416                    material_bind_group_index: None,
417                    vertex_slab: default(),
418                    index_slab: None,
419                    lightmap_slab: None,
420                },
421                // The asset ID is arbitrary; we simply use [`AssetId::invalid`],
422                // but you can use anything you like. Note that the asset ID need
423                // not be the ID of a [`Mesh`].
424                Opaque3dBinKey {
425                    asset_id: AssetId::<Mesh>::invalid().untyped(),
426                },
427                (render_entity, visible_entity),
428                mesh_instance.current_uniform_index,
429                // This example supports batching, but if your pipeline doesn't
430                // support it you can use `BinnedRenderPhaseType::UnbatchableMesh`
431                BinnedRenderPhaseType::BatchableMesh,
432                *change_tick,
433            );
434
435            // Create a *work item*. A work item tells the Bevy renderer to
436            // transform the mesh on GPU.
437            work_item_buffer.push(
438                mesh.indexed(),
439                PreprocessWorkItem {
440                    input_index: input_index.into(),
441                    output_or_indirect_parameters_index: if no_indirect_drawing {
442                        output_index
443                    } else {
444                        mesh_info.indirect_parameters_index
445                    },
446                },
447            );
448        }
449
450        // Now if there were any meshes, we need to add a command to the
451        // indirect parameters buffer, so that the renderer will end up
452        // enqueuing a command to draw the mesh.
453        if let Some(mesh_info) = mesh_batch_set_info {
454            phase_indirect_parameters_buffers
455                .buffers
456                .add_batch_set(mesh_info.is_indexed, mesh_info.indirect_parameters_index);
457        }
458    }
459}
Source

pub fn from_samples(samples: u32) -> Msaa

Trait Implementations§

Source§

impl Clone for Msaa

Source§

fn clone(&self) -> Msaa

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Component for Msaa
where Msaa: Send + Sync + 'static,

Source§

const STORAGE_TYPE: StorageType = bevy_ecs::component::StorageType::Table

A constant indicating the storage type used for this component.
Source§

type Mutability = Mutable

A marker type to assist Bevy with determining if this component is mutable, or immutable. Mutable components will have [Component<Mutability = Mutable>], while immutable components will instead have [Component<Mutability = Immutable>]. Read more
Source§

fn register_required_components( requiree: ComponentId, components: &mut ComponentsRegistrator<'_>, required_components: &mut RequiredComponents, inheritance_depth: u16, recursion_check_stack: &mut Vec<ComponentId>, )

Registers required components.
Source§

fn clone_behavior() -> ComponentCloneBehavior

Called when registering this component, allowing to override clone function (or disable cloning altogether) for this component. Read more
Source§

fn map_entities<M>(this: &mut Msaa, mapper: &mut M)
where M: EntityMapper,

Maps the entities on this component using the given EntityMapper. This is used to remap entities in contexts like scenes and entity cloning. When deriving Component, this is populated by annotating fields containing entities with #[entities] Read more
Source§

fn register_component_hooks(hooks: &mut ComponentHooks)

👎Deprecated since 0.16.0: Use the individual hook methods instead (e.g., Component::on_add, etc.)
Called when registering this component, allowing mutable access to its ComponentHooks.
Source§

fn on_add() -> Option<for<'w> fn(DeferredWorld<'w>, HookContext)>

Gets the on_add ComponentHook for this Component if one is defined.
Source§

fn on_insert() -> Option<for<'w> fn(DeferredWorld<'w>, HookContext)>

Gets the on_insert ComponentHook for this Component if one is defined.
Source§

fn on_replace() -> Option<for<'w> fn(DeferredWorld<'w>, HookContext)>

Gets the on_replace ComponentHook for this Component if one is defined.
Source§

fn on_remove() -> Option<for<'w> fn(DeferredWorld<'w>, HookContext)>

Gets the on_remove ComponentHook for this Component if one is defined.
Source§

fn on_despawn() -> Option<for<'w> fn(DeferredWorld<'w>, HookContext)>

Gets the on_despawn ComponentHook for this Component if one is defined.
Source§

impl Debug for Msaa

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl Default for Msaa

Source§

fn default() -> Msaa

Returns the “default value” for a type. Read more
Source§

impl Enum for Msaa
where Msaa: Any + Send + Sync,

Source§

fn field(&self, __name_param: &str) -> Option<&(dyn PartialReflect + 'static)>

Returns a reference to the value of the field (in the current variant) with the given name. Read more
Source§

fn field_at( &self, __index_param: usize, ) -> Option<&(dyn PartialReflect + 'static)>

Returns a reference to the value of the field (in the current variant) at the given index.
Source§

fn field_mut( &mut self, __name_param: &str, ) -> Option<&mut (dyn PartialReflect + 'static)>

Returns a mutable reference to the value of the field (in the current variant) with the given name. Read more
Source§

fn field_at_mut( &mut self, __index_param: usize, ) -> Option<&mut (dyn PartialReflect + 'static)>

Returns a mutable reference to the value of the field (in the current variant) at the given index.
Source§

fn index_of(&self, __name_param: &str) -> Option<usize>

Returns the index of the field (in the current variant) with the given name. Read more
Source§

fn name_at(&self, __index_param: usize) -> Option<&str>

Returns the name of the field (in the current variant) with the given index. Read more
Source§

fn iter_fields(&self) -> VariantFieldIter<'_>

Returns an iterator over the values of the current variant’s fields.
Source§

fn field_len(&self) -> usize

Returns the number of fields in the current variant.
Source§

fn variant_name(&self) -> &str

The name of the current variant.
Source§

fn variant_index(&self) -> usize

The index of the current variant.
Source§

fn variant_type(&self) -> VariantType

The type of the current variant.
Source§

fn to_dynamic_enum(&self) -> DynamicEnum

Creates a new DynamicEnum from this enum.
Source§

fn clone_dynamic(&self) -> DynamicEnum

👎Deprecated since 0.16.0: use to_dynamic_enum instead
Source§

fn is_variant(&self, variant_type: VariantType) -> bool

Returns true if the current variant’s type matches the given one.
Source§

fn variant_path(&self) -> String

Returns the full path to the current variant.
Source§

fn get_represented_enum_info(&self) -> Option<&'static EnumInfo>

Will return None if TypeInfo is not available.
Source§

impl ExtractComponent for Msaa
where Msaa: Clone,

Source§

type QueryData = &'static Msaa

ECS ReadOnlyQueryData to fetch the components to extract.
Source§

type QueryFilter = ()

Filters the entities with additional constraints.
Source§

type Out = Msaa

The output from extraction. Read more
Source§

fn extract_component( item: <<Msaa as ExtractComponent>::QueryData as QueryData>::Item<'_>, ) -> Option<<Msaa as ExtractComponent>::Out>

Defines how the component is transferred into the “render world”.
Source§

impl From<Msaa> for MeshPipelineViewLayoutKey

Source§

fn from(value: Msaa) -> MeshPipelineViewLayoutKey

Converts to this type from the input type.
Source§

impl FromArg for &'static Msaa
where Msaa: Any + Send + Sync,

Source§

type This<'from_arg> = &'from_arg Msaa

The type to convert into. Read more
Source§

fn from_arg( arg: Arg<'_>, ) -> Result<<&'static Msaa as FromArg>::This<'_>, ArgError>

Creates an item from an argument. Read more
Source§

impl FromArg for &'static mut Msaa
where Msaa: Any + Send + Sync,

Source§

type This<'from_arg> = &'from_arg mut Msaa

The type to convert into. Read more
Source§

fn from_arg( arg: Arg<'_>, ) -> Result<<&'static mut Msaa as FromArg>::This<'_>, ArgError>

Creates an item from an argument. Read more
Source§

impl FromArg for Msaa
where Msaa: Any + Send + Sync,

Source§

type This<'from_arg> = Msaa

The type to convert into. Read more
Source§

fn from_arg(arg: Arg<'_>) -> Result<<Msaa as FromArg>::This<'_>, ArgError>

Creates an item from an argument. Read more
Source§

impl FromReflect for Msaa
where Msaa: Any + Send + Sync,

Source§

fn from_reflect(__param0: &(dyn PartialReflect + 'static)) -> Option<Msaa>

Constructs a concrete instance of Self from a reflected value.
Source§

fn take_from_reflect( reflect: Box<dyn PartialReflect>, ) -> Result<Self, Box<dyn PartialReflect>>

Attempts to downcast the given value to Self using, constructing the value using from_reflect if that fails. Read more
Source§

impl GetOwnership for &Msaa
where Msaa: Any + Send + Sync,

Source§

fn ownership() -> Ownership

Returns the ownership of Self.
Source§

impl GetOwnership for &mut Msaa
where Msaa: Any + Send + Sync,

Source§

fn ownership() -> Ownership

Returns the ownership of Self.
Source§

impl GetOwnership for Msaa
where Msaa: Any + Send + Sync,

Source§

fn ownership() -> Ownership

Returns the ownership of Self.
Source§

impl GetTypeRegistration for Msaa
where Msaa: Any + Send + Sync,

Source§

fn get_type_registration() -> TypeRegistration

Returns the default TypeRegistration for this type.
Source§

fn register_type_dependencies(registry: &mut TypeRegistry)

Registers other types needed by this type. Read more
Source§

impl Hash for Msaa

Source§

fn hash<__H>(&self, state: &mut __H)
where __H: Hasher,

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl IntoReturn for &Msaa
where Msaa: Any + Send + Sync,

Source§

fn into_return<'into_return>(self) -> Return<'into_return>
where &Msaa: 'into_return,

Converts Self into a Return value.
Source§

impl IntoReturn for &mut Msaa
where Msaa: Any + Send + Sync,

Source§

fn into_return<'into_return>(self) -> Return<'into_return>
where &mut Msaa: 'into_return,

Converts Self into a Return value.
Source§

impl IntoReturn for Msaa
where Msaa: Any + Send + Sync,

Source§

fn into_return<'into_return>(self) -> Return<'into_return>
where Msaa: 'into_return,

Converts Self into a Return value.
Source§

impl PartialEq for Msaa

Source§

fn eq(&self, other: &Msaa) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl PartialOrd for Msaa

Source§

fn partial_cmp(&self, other: &Msaa) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · Source§

fn lt(&self, other: &Rhs) -> bool

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · Source§

fn le(&self, other: &Rhs) -> bool

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · Source§

fn gt(&self, other: &Rhs) -> bool

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · Source§

fn ge(&self, other: &Rhs) -> bool

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
Source§

impl PartialReflect for Msaa
where Msaa: Any + Send + Sync,

Source§

fn get_represented_type_info(&self) -> Option<&'static TypeInfo>

Returns the TypeInfo of the type represented by this value. Read more
Source§

fn try_apply( &mut self, __value_param: &(dyn PartialReflect + 'static), ) -> Result<(), ApplyError>

Tries to apply a reflected value to this value. Read more
Source§

fn reflect_kind(&self) -> ReflectKind

Returns a zero-sized enumeration of “kinds” of type. Read more
Source§

fn reflect_ref(&self) -> ReflectRef<'_>

Returns an immutable enumeration of “kinds” of type. Read more
Source§

fn reflect_mut(&mut self) -> ReflectMut<'_>

Returns a mutable enumeration of “kinds” of type. Read more
Source§

fn reflect_owned(self: Box<Msaa>) -> ReflectOwned

Returns an owned enumeration of “kinds” of type. Read more
Source§

fn try_into_reflect( self: Box<Msaa>, ) -> Result<Box<dyn Reflect>, Box<dyn PartialReflect>>

Attempts to cast this type to a boxed, fully-reflected value.
Source§

fn try_as_reflect(&self) -> Option<&(dyn Reflect + 'static)>

Attempts to cast this type to a fully-reflected value.
Source§

fn try_as_reflect_mut(&mut self) -> Option<&mut (dyn Reflect + 'static)>

Attempts to cast this type to a mutable, fully-reflected value.
Source§

fn into_partial_reflect(self: Box<Msaa>) -> Box<dyn PartialReflect>

Casts this type to a boxed, reflected value. Read more
Source§

fn as_partial_reflect(&self) -> &(dyn PartialReflect + 'static)

Casts this type to a reflected value. Read more
Source§

fn as_partial_reflect_mut(&mut self) -> &mut (dyn PartialReflect + 'static)

Casts this type to a mutable, reflected value. Read more
Source§

fn reflect_hash(&self) -> Option<u64>

Returns a hash of the value (which includes the type). Read more
Source§

fn reflect_partial_eq( &self, value: &(dyn PartialReflect + 'static), ) -> Option<bool>

Returns a “partial equality” comparison result. Read more
Source§

fn debug(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Debug formatter for the value. Read more
Source§

fn reflect_clone(&self) -> Result<Box<dyn Reflect>, ReflectCloneError>

Attempts to clone Self using reflection. Read more
Source§

fn apply(&mut self, value: &(dyn PartialReflect + 'static))

Applies a reflected value to this value. Read more
Source§

fn clone_value(&self) -> Box<dyn PartialReflect>

👎Deprecated since 0.16.0: to clone reflected values, prefer using reflect_clone. To convert reflected values to dynamic ones, use to_dynamic.
Clones Self into its dynamic representation. Read more
Source§

fn to_dynamic(&self) -> Box<dyn PartialReflect>

Converts this reflected value into its dynamic representation based on its kind. Read more
Source§

fn is_dynamic(&self) -> bool

Indicates whether or not this type is a dynamic type. Read more
Source§

impl Reflect for Msaa
where Msaa: Any + Send + Sync,

Source§

fn into_any(self: Box<Msaa>) -> Box<dyn Any>

Returns the value as a Box<dyn Any>. Read more
Source§

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

Returns the value as a &dyn Any. Read more
Source§

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

Returns the value as a &mut dyn Any. Read more
Source§

fn into_reflect(self: Box<Msaa>) -> Box<dyn Reflect>

Casts this type to a boxed, fully-reflected value.
Source§

fn as_reflect(&self) -> &(dyn Reflect + 'static)

Casts this type to a fully-reflected value.
Source§

fn as_reflect_mut(&mut self) -> &mut (dyn Reflect + 'static)

Casts this type to a mutable, fully-reflected value.
Source§

fn set(&mut self, value: Box<dyn Reflect>) -> Result<(), Box<dyn Reflect>>

Performs a type-checked assignment of a reflected value to this value. Read more
Source§

impl TypePath for Msaa
where Msaa: Any + Send + Sync,

Source§

fn type_path() -> &'static str

Returns the fully qualified path of the underlying type. Read more
Source§

fn short_type_path() -> &'static str

Returns a short, pretty-print enabled path to the type. Read more
Source§

fn type_ident() -> Option<&'static str>

Returns the name of the type, or None if it is anonymous. Read more
Source§

fn crate_name() -> Option<&'static str>

Returns the name of the crate the type is in, or None if it is anonymous. Read more
Source§

fn module_path() -> Option<&'static str>

Returns the path to the module the type is in, or None if it is anonymous. Read more
Source§

impl Typed for Msaa
where Msaa: Any + Send + Sync,

Source§

fn type_info() -> &'static TypeInfo

Returns the compile-time info for the underlying type.
Source§

impl Copy for Msaa

Source§

impl Eq for Msaa

Source§

impl StructuralPartialEq for Msaa

Auto Trait Implementations§

§

impl Freeze for Msaa

§

impl RefUnwindSafe for Msaa

§

impl Send for Msaa

§

impl Sync for Msaa

§

impl Unpin for Msaa

§

impl UnwindSafe for Msaa

Blanket Implementations§

Source§

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

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T, U> AsBindGroupShaderType<U> for T
where U: ShaderType, &'a T: for<'a> Into<U>,

Source§

fn as_bind_group_shader_type(&self, _images: &RenderAssets<GpuImage>) -> U

Return the T ShaderType for self. When used in AsBindGroup derives, it is safe to assume that all images in self exist.
Source§

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

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

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

Source§

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

Mutably borrows from an owned value. Read more
Source§

impl<C> Bundle for C
where C: Component,

Source§

fn component_ids( components: &mut ComponentsRegistrator<'_>, ids: &mut impl FnMut(ComponentId), )

Source§

fn register_required_components( components: &mut ComponentsRegistrator<'_>, required_components: &mut RequiredComponents, )

Registers components that are required by the components in this Bundle.
Source§

fn get_component_ids( components: &Components, ids: &mut impl FnMut(Option<ComponentId>), )

Gets this Bundle’s component ids. This will be None if the component has not been registered.
Source§

impl<C> BundleFromComponents for C
where C: Component,

Source§

unsafe fn from_components<T, F>(ctx: &mut T, func: &mut F) -> C
where F: for<'a> FnMut(&'a mut T) -> OwningPtr<'a>,

Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> Conv for T

Source§

fn conv<T>(self) -> T
where Self: Into<T>,

Converts self into T using Into<T>. Read more
Source§

impl<T> Downcast<T> for T

Source§

fn downcast(&self) -> &T

Source§

impl<T> Downcast for T
where T: Any,

Source§

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

Converts Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.
Source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Converts Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
Source§

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

Converts &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)

Converts &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> Downcast for T
where T: Any,

Source§

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

Convert 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>

Convert 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)

Convert &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)

Convert &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> DowncastSend for T
where T: Any + Send,

Source§

fn into_any_send(self: Box<T>) -> Box<dyn Any + Send>

Converts Box<Trait> (where Trait: DowncastSend) to Box<dyn Any + Send>, which can then be downcast into Box<ConcreteType> where ConcreteType implements Trait.
Source§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

Source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Sync + Send>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
Source§

impl<T> DynEq for T
where T: Any + Eq,

Source§

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

Casts the type to dyn Any.
Source§

fn dyn_eq(&self, other: &(dyn DynEq + 'static)) -> bool

This method tests for self and other values to be equal. Read more
Source§

impl<T> DynHash for T
where T: DynEq + Hash,

Source§

fn as_dyn_eq(&self) -> &(dyn DynEq + 'static)

Casts the type to dyn Any.
Source§

fn dyn_hash(&self, state: &mut dyn Hasher)

Feeds this value into the given Hasher.
Source§

impl<C> DynamicBundle for C
where C: Component,

Source§

type Effect = ()

An operation on the entity that happens after inserting this bundle.
Source§

fn get_components( self, func: &mut impl FnMut(StorageType, OwningPtr<'_>), ) -> <C as DynamicBundle>::Effect

Source§

impl<T> DynamicTypePath for T
where T: TypePath,

Source§

impl<T> DynamicTyped for T
where T: Typed,

Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

impl<T> FmtForward for T

Source§

fn fmt_binary(self) -> FmtBinary<Self>
where Self: Binary,

Causes self to use its Binary implementation when Debug-formatted.
Source§

fn fmt_display(self) -> FmtDisplay<Self>
where Self: Display,

Causes self to use its Display implementation when Debug-formatted.
Source§

fn fmt_lower_exp(self) -> FmtLowerExp<Self>
where Self: LowerExp,

Causes self to use its LowerExp implementation when Debug-formatted.
Source§

fn fmt_lower_hex(self) -> FmtLowerHex<Self>
where Self: LowerHex,

Causes self to use its LowerHex implementation when Debug-formatted.
Source§

fn fmt_octal(self) -> FmtOctal<Self>
where Self: Octal,

Causes self to use its Octal implementation when Debug-formatted.
Source§

fn fmt_pointer(self) -> FmtPointer<Self>
where Self: Pointer,

Causes self to use its Pointer implementation when Debug-formatted.
Source§

fn fmt_upper_exp(self) -> FmtUpperExp<Self>
where Self: UpperExp,

Causes self to use its UpperExp implementation when Debug-formatted.
Source§

fn fmt_upper_hex(self) -> FmtUpperHex<Self>
where Self: UpperHex,

Causes self to use its UpperHex implementation when Debug-formatted.
Source§

fn fmt_list(self) -> FmtList<Self>
where &'a Self: for<'a> IntoIterator,

Formats each item in a sequence. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<S> FromSample<S> for S

Source§

fn from_sample_(s: S) -> S

Source§

impl<T> FromWorld for T
where T: Default,

Source§

fn from_world(_world: &mut World) -> T

Creates Self using default().

Source§

impl<T> GetPath for T
where T: Reflect + ?Sized,

Source§

fn reflect_path<'p>( &self, path: impl ReflectPath<'p>, ) -> Result<&(dyn PartialReflect + 'static), ReflectPathError<'p>>

Returns a reference to the value specified by path. Read more
Source§

fn reflect_path_mut<'p>( &mut self, path: impl ReflectPath<'p>, ) -> Result<&mut (dyn PartialReflect + 'static), ReflectPathError<'p>>

Returns a mutable reference to the value specified by path. Read more
Source§

fn path<'p, T>( &self, path: impl ReflectPath<'p>, ) -> Result<&T, ReflectPathError<'p>>
where T: Reflect,

Returns a statically typed reference to the value specified by path. Read more
Source§

fn path_mut<'p, T>( &mut self, path: impl ReflectPath<'p>, ) -> Result<&mut T, ReflectPathError<'p>>
where T: Reflect,

Returns a statically typed mutable reference to the value specified by path. Read more
Source§

impl<T> Instrument for T

Source§

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

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

fn in_current_span(self) -> Instrumented<Self>

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

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

Source§

fn into(self) -> U

Calls U::from(self).

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

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

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

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<F, T> IntoSample<T> for F
where T: FromSample<F>,

Source§

fn into_sample(self) -> T

Source§

impl<T> NoneValue for T
where T: Default,

Source§

type NoneType = T

Source§

fn null_value() -> T

The none-equivalent value.
Source§

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

Source§

fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> R
where Self: Sized,

Pipes by value. This is generally the method you want to use. Read more
Source§

fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> R
where R: 'a,

Borrows self and passes that borrow into the pipe function. Read more
Source§

fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> R
where R: 'a,

Mutably borrows self and passes that borrow into the pipe function. Read more
Source§

fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
where Self: Borrow<B>, B: 'a + ?Sized, R: 'a,

Borrows self, then passes self.borrow() into the pipe function. Read more
Source§

fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
where Self: BorrowMut<B>, B: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.borrow_mut() into the pipe function. Read more
Source§

fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
where Self: AsRef<U>, U: 'a + ?Sized, R: 'a,

Borrows 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
where Self: AsMut<U>, U: 'a + ?Sized, R: 'a,

Mutably borrows 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
where Self: Deref<Target = T>, T: 'a + ?Sized, R: 'a,

Borrows self, then passes self.deref() into the pipe function.
Source§

fn pipe_deref_mut<'a, T, R>( &'a mut self, func: impl FnOnce(&'a mut T) -> R, ) -> R
where Self: DerefMut<Target = T> + Deref, T: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.deref_mut() into the pipe function.
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

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

Initializes a with the given initializer. Read more
Source§

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

Dereferences the given pointer. Read more
Source§

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

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

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

impl<R, P> ReadPrimitive<R> for P
where R: Read + ReadEndian<P>, P: Default,

Source§

fn read_from_little_endian(read: &mut R) -> Result<Self, Error>

Read this value from the supplied reader. Same as ReadEndian::read_from_little_endian().
Source§

fn read_from_big_endian(read: &mut R) -> Result<Self, Error>

Read this value from the supplied reader. Same as ReadEndian::read_from_big_endian().
Source§

fn read_from_native_endian(read: &mut R) -> Result<Self, Error>

Read this value from the supplied reader. Same as ReadEndian::read_from_native_endian().
Source§

impl<T> Tap for T

Source§

fn tap(self, func: impl FnOnce(&Self)) -> Self

Immutable access to a value. Read more
Source§

fn tap_mut(self, func: impl FnOnce(&mut Self)) -> Self

Mutable access to a value. Read more
Source§

fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Immutable access to the Borrow<B> of a value. Read more
Source§

fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Mutable access to the BorrowMut<B> of a value. Read more
Source§

fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Immutable access to the AsRef<R> view of a value. Read more
Source§

fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Mutable access to the AsMut<R> view of a value. Read more
Source§

fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Immutable access to the Deref::Target of a value. Read more
Source§

fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Mutable access to the Deref::Target of a value. Read more
Source§

fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self

Calls .tap() only in debug builds, and is erased in release builds.
Source§

fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self

Calls .tap_mut() only in debug builds, and is erased in release builds.
Source§

fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Calls .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
where Self: BorrowMut<B>, B: ?Sized,

Calls .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
where Self: AsRef<R>, R: ?Sized,

Calls .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
where Self: AsMut<R>, R: ?Sized,

Calls .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
where Self: Deref<Target = T>, T: ?Sized,

Calls .tap_deref() only in debug builds, and is erased in release builds.
Source§

fn tap_deref_mut_dbg<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Calls .tap_deref_mut() only in debug builds, and is erased in release builds.
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> ToSample<U> for T
where U: FromSample<T>,

Source§

fn to_sample_(self) -> U

Source§

impl<T> TryConv for T

Source§

fn try_conv<T>(self) -> Result<T, Self::Error>
where Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. Read more
Source§

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

Source§

type Error = Infallible

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

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

Performs the conversion.
Source§

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

Source§

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

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

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

Performs the conversion.
Source§

impl<T> TypeData for T
where T: 'static + Send + Sync + Clone,

Source§

impl<T> Upcast<T> for T

Source§

fn upcast(&self) -> Option<&T>

Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

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

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

fn with_current_subscriber(self) -> WithDispatch<Self>

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

impl<T> ConditionalSend for T
where T: Send,

Source§

impl<S, T> Duplex<S> for T
where T: FromSample<S> + ToSample<S>,

Source§

impl<T> Reflectable for T

Source§

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

Source§

impl<T> WasmNotSend for T
where T: Send,

Source§

impl<T> WasmNotSendSync for T

Source§

impl<T> WasmNotSync for T
where T: Sync,