Enum AssetId

Source
pub enum AssetId<A>
where A: Asset,
{ Index { index: AssetIndex, marker: PhantomData<fn() -> A>, }, Uuid { uuid: Uuid, }, }
Expand description

A unique runtime-only identifier for an Asset. This is cheap to Copy/Clone and is not directly tied to the lifetime of the Asset. This means it can point to an Asset that no longer exists.

For an identifier tied to the lifetime of an asset, see Handle.

For an “untyped” / “generic-less” id, see UntypedAssetId.

Variants§

§

Index

A small / efficient runtime identifier that can be used to efficiently look up an asset stored in Assets. This is the “default” identifier used for assets. The alternative(s) (ex: AssetId::Uuid) will only be used if assets are explicitly registered that way.

Fields

§index: AssetIndex

The unstable, opaque index of the asset.

§marker: PhantomData<fn() -> A>

A marker to store the type information of the asset.

§

Uuid

A stable-across-runs / const asset identifier. This will only be used if an asset is explicitly registered in Assets with one.

Fields

§uuid: Uuid

The UUID provided during asset registration.

Implementations§

Source§

impl<A> AssetId<A>
where A: Asset,

Source

pub const DEFAULT_UUID: Uuid

The uuid for the default AssetId. It is valid to assign a value to this in Assets and by convention (where appropriate) assets should support this pattern.

Source

pub const INVALID_UUID: Uuid

This asset id should never be valid. Assigning a value to this in Assets will produce undefined behavior, so don’t do it!

Source

pub const fn invalid() -> AssetId<A>

Returns an AssetId with Self::INVALID_UUID, which should never be assigned to.

Examples found in repository?
examples/shader/custom_phase_item.rs (line 278)
222fn queue_custom_phase_item(
223    pipeline_cache: Res<PipelineCache>,
224    custom_phase_pipeline: Res<CustomPhasePipeline>,
225    mut opaque_render_phases: ResMut<ViewBinnedRenderPhases<Opaque3d>>,
226    opaque_draw_functions: Res<DrawFunctions<Opaque3d>>,
227    mut specialized_render_pipelines: ResMut<SpecializedRenderPipelines<CustomPhasePipeline>>,
228    views: Query<(&ExtractedView, &RenderVisibleEntities, &Msaa)>,
229    mut next_tick: Local<Tick>,
230) {
231    let draw_custom_phase_item = opaque_draw_functions
232        .read()
233        .id::<DrawCustomPhaseItemCommands>();
234
235    // Render phases are per-view, so we need to iterate over all views so that
236    // the entity appears in them. (In this example, we have only one view, but
237    // it's good practice to loop over all views anyway.)
238    for (view, view_visible_entities, msaa) in views.iter() {
239        let Some(opaque_phase) = opaque_render_phases.get_mut(&view.retained_view_entity) else {
240            continue;
241        };
242
243        // Find all the custom rendered entities that are visible from this
244        // view.
245        for &entity in view_visible_entities.get::<CustomRenderedEntity>().iter() {
246            // Ordinarily, the [`SpecializedRenderPipeline::Key`] would contain
247            // some per-view settings, such as whether the view is HDR, but for
248            // simplicity's sake we simply hard-code the view's characteristics,
249            // with the exception of number of MSAA samples.
250            let pipeline_id = specialized_render_pipelines.specialize(
251                &pipeline_cache,
252                &custom_phase_pipeline,
253                *msaa,
254            );
255
256            // Bump the change tick in order to force Bevy to rebuild the bin.
257            let this_tick = next_tick.get() + 1;
258            next_tick.set(this_tick);
259
260            // Add the custom render item. We use the
261            // [`BinnedRenderPhaseType::NonMesh`] type to skip the special
262            // handling that Bevy has for meshes (preprocessing, indirect
263            // draws, etc.)
264            //
265            // The asset ID is arbitrary; we simply use [`AssetId::invalid`],
266            // but you can use anything you like. Note that the asset ID need
267            // not be the ID of a [`Mesh`].
268            opaque_phase.add(
269                Opaque3dBatchSetKey {
270                    draw_function: draw_custom_phase_item,
271                    pipeline: pipeline_id,
272                    material_bind_group_index: None,
273                    lightmap_slab: None,
274                    vertex_slab: default(),
275                    index_slab: None,
276                },
277                Opaque3dBinKey {
278                    asset_id: AssetId::<Mesh>::invalid().untyped(),
279                },
280                entity,
281                InputUniformIndex::default(),
282                BinnedRenderPhaseType::NonMesh,
283                *next_tick,
284            );
285        }
286    }
287}
More examples
Hide additional examples
examples/shader/specialized_mesh_pipeline.rs (line 425)
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 untyped(self) -> UntypedAssetId

Converts this to an “untyped” / “generic-less” Asset identifier that stores the type information inside the UntypedAssetId.

Examples found in repository?
examples/shader/custom_phase_item.rs (line 278)
222fn queue_custom_phase_item(
223    pipeline_cache: Res<PipelineCache>,
224    custom_phase_pipeline: Res<CustomPhasePipeline>,
225    mut opaque_render_phases: ResMut<ViewBinnedRenderPhases<Opaque3d>>,
226    opaque_draw_functions: Res<DrawFunctions<Opaque3d>>,
227    mut specialized_render_pipelines: ResMut<SpecializedRenderPipelines<CustomPhasePipeline>>,
228    views: Query<(&ExtractedView, &RenderVisibleEntities, &Msaa)>,
229    mut next_tick: Local<Tick>,
230) {
231    let draw_custom_phase_item = opaque_draw_functions
232        .read()
233        .id::<DrawCustomPhaseItemCommands>();
234
235    // Render phases are per-view, so we need to iterate over all views so that
236    // the entity appears in them. (In this example, we have only one view, but
237    // it's good practice to loop over all views anyway.)
238    for (view, view_visible_entities, msaa) in views.iter() {
239        let Some(opaque_phase) = opaque_render_phases.get_mut(&view.retained_view_entity) else {
240            continue;
241        };
242
243        // Find all the custom rendered entities that are visible from this
244        // view.
245        for &entity in view_visible_entities.get::<CustomRenderedEntity>().iter() {
246            // Ordinarily, the [`SpecializedRenderPipeline::Key`] would contain
247            // some per-view settings, such as whether the view is HDR, but for
248            // simplicity's sake we simply hard-code the view's characteristics,
249            // with the exception of number of MSAA samples.
250            let pipeline_id = specialized_render_pipelines.specialize(
251                &pipeline_cache,
252                &custom_phase_pipeline,
253                *msaa,
254            );
255
256            // Bump the change tick in order to force Bevy to rebuild the bin.
257            let this_tick = next_tick.get() + 1;
258            next_tick.set(this_tick);
259
260            // Add the custom render item. We use the
261            // [`BinnedRenderPhaseType::NonMesh`] type to skip the special
262            // handling that Bevy has for meshes (preprocessing, indirect
263            // draws, etc.)
264            //
265            // The asset ID is arbitrary; we simply use [`AssetId::invalid`],
266            // but you can use anything you like. Note that the asset ID need
267            // not be the ID of a [`Mesh`].
268            opaque_phase.add(
269                Opaque3dBatchSetKey {
270                    draw_function: draw_custom_phase_item,
271                    pipeline: pipeline_id,
272                    material_bind_group_index: None,
273                    lightmap_slab: None,
274                    vertex_slab: default(),
275                    index_slab: None,
276                },
277                Opaque3dBinKey {
278                    asset_id: AssetId::<Mesh>::invalid().untyped(),
279                },
280                entity,
281                InputUniformIndex::default(),
282                BinnedRenderPhaseType::NonMesh,
283                *next_tick,
284            );
285        }
286    }
287}
More examples
Hide additional examples
examples/shader/specialized_mesh_pipeline.rs (line 425)
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}

Trait Implementations§

Source§

impl<A> Clone for AssetId<A>
where A: Asset,

Source§

fn clone(&self) -> AssetId<A>

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<A> Debug for AssetId<A>
where A: Asset,

Source§

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

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

impl<A> Default for AssetId<A>
where A: Asset,

Source§

fn default() -> AssetId<A>

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

impl<'de, A> Deserialize<'de> for AssetId<A>
where A: Asset,

Source§

fn deserialize<__D>( __deserializer: __D, ) -> Result<AssetId<A>, <__D as Deserializer<'de>>::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl<A> Display for AssetId<A>
where A: Asset,

Source§

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

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

impl<A> Enum for AssetId<A>
where A: Asset + TypePath, AssetId<A>: Any + Send + Sync, AssetIndex: FromReflect + TypePath + MaybeTyped + RegisterForReflection, Uuid: FromReflect + TypePath + MaybeTyped + RegisterForReflection,

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 From<&AnimationGraphHandle> for AssetId<AnimationGraph>

Source§

fn from(handle: &AnimationGraphHandle) -> AssetId<AnimationGraph>

Converts to this type from the input type.
Source§

impl<A> From<&Handle<A>> for AssetId<A>
where A: Asset,

Source§

fn from(value: &Handle<A>) -> AssetId<A>

Converts to this type from the input type.
Source§

impl<M> From<&MaterialNode<M>> for AssetId<M>
where M: UiMaterial,

Source§

fn from(material: &MaterialNode<M>) -> AssetId<M>

Converts to this type from the input type.
Source§

impl From<&Mesh2d> for AssetId<Mesh>

Source§

fn from(mesh: &Mesh2d) -> AssetId<Mesh>

Converts to this type from the input type.
Source§

impl From<&Mesh3d> for AssetId<Mesh>

Source§

fn from(mesh: &Mesh3d) -> AssetId<Mesh>

Converts to this type from the input type.
Source§

impl<M> From<&MeshMaterial2d<M>> for AssetId<M>
where M: Material2d,

Source§

fn from(material: &MeshMaterial2d<M>) -> AssetId<M>

Converts to this type from the input type.
Source§

impl<M> From<&MeshMaterial3d<M>> for AssetId<M>
where M: Material,

Source§

fn from(material: &MeshMaterial3d<M>) -> AssetId<M>

Converts to this type from the input type.
Source§

impl From<&MeshletMesh3d> for AssetId<MeshletMesh>

Source§

fn from(mesh: &MeshletMesh3d) -> AssetId<MeshletMesh>

Converts to this type from the input type.
Source§

impl<A> From<&mut Handle<A>> for AssetId<A>
where A: Asset,

Source§

fn from(value: &mut Handle<A>) -> AssetId<A>

Converts to this type from the input type.
Source§

impl<A> From<(AssetIndex, PhantomData<fn() -> A>)> for AssetId<A>
where A: Asset,

Source§

fn from(value: (AssetIndex, PhantomData<fn() -> A>)) -> AssetId<A>

Converts to this type from the input type.
Source§

impl From<AnimationGraphHandle> for AssetId<AnimationGraph>

Source§

fn from(handle: AnimationGraphHandle) -> AssetId<AnimationGraph>

Converts to this type from the input type.
Source§

impl<A> From<AssetId<A>> for UntypedAssetId
where A: Asset,

Source§

fn from(value: AssetId<A>) -> UntypedAssetId

Converts to this type from the input type.
Source§

impl<A> From<AssetIndex> for AssetId<A>
where A: Asset,

Source§

fn from(value: AssetIndex) -> AssetId<A>

Converts to this type from the input type.
Source§

impl<M> From<MaterialNode<M>> for AssetId<M>
where M: UiMaterial,

Source§

fn from(material: MaterialNode<M>) -> AssetId<M>

Converts to this type from the input type.
Source§

impl From<Mesh2d> for AssetId<Mesh>

Source§

fn from(mesh: Mesh2d) -> AssetId<Mesh>

Converts to this type from the input type.
Source§

impl From<Mesh3d> for AssetId<Mesh>

Source§

fn from(mesh: Mesh3d) -> AssetId<Mesh>

Converts to this type from the input type.
Source§

impl<M> From<MeshMaterial2d<M>> for AssetId<M>
where M: Material2d,

Source§

fn from(material: MeshMaterial2d<M>) -> AssetId<M>

Converts to this type from the input type.
Source§

impl<M> From<MeshMaterial3d<M>> for AssetId<M>
where M: Material,

Source§

fn from(material: MeshMaterial3d<M>) -> AssetId<M>

Converts to this type from the input type.
Source§

impl From<MeshletMesh3d> for AssetId<MeshletMesh>

Source§

fn from(mesh: MeshletMesh3d) -> AssetId<MeshletMesh>

Converts to this type from the input type.
Source§

impl<A> From<Uuid> for AssetId<A>
where A: Asset,

Source§

fn from(value: Uuid) -> AssetId<A>

Converts to this type from the input type.
Source§

impl<A> FromArg for &'static AssetId<A>
where A: Asset + TypePath, AssetId<A>: Any + Send + Sync, AssetIndex: FromReflect + TypePath + MaybeTyped + RegisterForReflection, Uuid: FromReflect + TypePath + MaybeTyped + RegisterForReflection,

Source§

type This<'from_arg> = &'from_arg AssetId<A>

The type to convert into. Read more
Source§

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

Creates an item from an argument. Read more
Source§

impl<A> FromArg for &'static mut AssetId<A>
where A: Asset + TypePath, AssetId<A>: Any + Send + Sync, AssetIndex: FromReflect + TypePath + MaybeTyped + RegisterForReflection, Uuid: FromReflect + TypePath + MaybeTyped + RegisterForReflection,

Source§

type This<'from_arg> = &'from_arg mut AssetId<A>

The type to convert into. Read more
Source§

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

Creates an item from an argument. Read more
Source§

impl<A> FromArg for AssetId<A>
where A: Asset + TypePath, AssetId<A>: Any + Send + Sync, AssetIndex: FromReflect + TypePath + MaybeTyped + RegisterForReflection, Uuid: FromReflect + TypePath + MaybeTyped + RegisterForReflection,

Source§

type This<'from_arg> = AssetId<A>

The type to convert into. Read more
Source§

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

Creates an item from an argument. Read more
Source§

impl<A> FromReflect for AssetId<A>
where A: Asset + TypePath, AssetId<A>: Any + Send + Sync, AssetIndex: FromReflect + TypePath + MaybeTyped + RegisterForReflection, Uuid: FromReflect + TypePath + MaybeTyped + RegisterForReflection,

Source§

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

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<A> GetOwnership for &AssetId<A>
where A: Asset + TypePath, AssetId<A>: Any + Send + Sync, AssetIndex: FromReflect + TypePath + MaybeTyped + RegisterForReflection, Uuid: FromReflect + TypePath + MaybeTyped + RegisterForReflection,

Source§

fn ownership() -> Ownership

Returns the ownership of Self.
Source§

impl<A> GetOwnership for &mut AssetId<A>
where A: Asset + TypePath, AssetId<A>: Any + Send + Sync, AssetIndex: FromReflect + TypePath + MaybeTyped + RegisterForReflection, Uuid: FromReflect + TypePath + MaybeTyped + RegisterForReflection,

Source§

fn ownership() -> Ownership

Returns the ownership of Self.
Source§

impl<A> GetOwnership for AssetId<A>
where A: Asset + TypePath, AssetId<A>: Any + Send + Sync, AssetIndex: FromReflect + TypePath + MaybeTyped + RegisterForReflection, Uuid: FromReflect + TypePath + MaybeTyped + RegisterForReflection,

Source§

fn ownership() -> Ownership

Returns the ownership of Self.
Source§

impl<A> GetTypeRegistration for AssetId<A>
where A: Asset + TypePath, AssetId<A>: Any + Send + Sync, AssetIndex: FromReflect + TypePath + MaybeTyped + RegisterForReflection, Uuid: FromReflect + TypePath + MaybeTyped + RegisterForReflection,

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<A> Hash for AssetId<A>
where A: Asset,

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<A> IntoReturn for &AssetId<A>
where A: Asset + TypePath, AssetId<A>: Any + Send + Sync, AssetIndex: FromReflect + TypePath + MaybeTyped + RegisterForReflection, Uuid: FromReflect + TypePath + MaybeTyped + RegisterForReflection,

Source§

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

Converts Self into a Return value.
Source§

impl<A> IntoReturn for &mut AssetId<A>
where A: Asset + TypePath, AssetId<A>: Any + Send + Sync, AssetIndex: FromReflect + TypePath + MaybeTyped + RegisterForReflection, Uuid: FromReflect + TypePath + MaybeTyped + RegisterForReflection,

Source§

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

Converts Self into a Return value.
Source§

impl<A> IntoReturn for AssetId<A>
where A: Asset + TypePath, AssetId<A>: Any + Send + Sync, AssetIndex: FromReflect + TypePath + MaybeTyped + RegisterForReflection, Uuid: FromReflect + TypePath + MaybeTyped + RegisterForReflection,

Source§

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

Converts Self into a Return value.
Source§

impl<A> Ord for AssetId<A>
where A: Asset,

Source§

fn cmp(&self, other: &AssetId<A>) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · Source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · Source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · Source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized,

Restrict a value to a certain interval. Read more
Source§

impl<A> PartialEq<AssetId<A>> for UntypedAssetId
where A: Asset,

Source§

fn eq(&self, other: &AssetId<A>) -> 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<A> PartialEq<UntypedAssetId> for AssetId<A>
where A: Asset,

Source§

fn eq(&self, other: &UntypedAssetId) -> 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<A> PartialEq for AssetId<A>
where A: Asset,

Source§

fn eq(&self, other: &AssetId<A>) -> 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<A> PartialOrd<AssetId<A>> for UntypedAssetId
where A: Asset,

Source§

fn partial_cmp(&self, other: &AssetId<A>) -> 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<A> PartialOrd<UntypedAssetId> for AssetId<A>
where A: Asset,

Source§

fn partial_cmp(&self, other: &UntypedAssetId) -> 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<A> PartialOrd for AssetId<A>
where A: Asset,

Source§

fn partial_cmp(&self, other: &AssetId<A>) -> 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<A> PartialReflect for AssetId<A>
where A: Asset + TypePath, AssetId<A>: Any + Send + Sync, AssetIndex: FromReflect + TypePath + MaybeTyped + RegisterForReflection, Uuid: FromReflect + TypePath + MaybeTyped + RegisterForReflection,

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<AssetId<A>>) -> ReflectOwned

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

fn try_into_reflect( self: Box<AssetId<A>>, ) -> 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<AssetId<A>>) -> 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<A> Reflect for AssetId<A>
where A: Asset + TypePath, AssetId<A>: Any + Send + Sync, AssetIndex: FromReflect + TypePath + MaybeTyped + RegisterForReflection, Uuid: FromReflect + TypePath + MaybeTyped + RegisterForReflection,

Source§

fn into_any(self: Box<AssetId<A>>) -> 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<AssetId<A>>) -> 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<A> Serialize for AssetId<A>
where A: Asset,

Source§

fn serialize<__S>( &self, __serializer: __S, ) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl<A> TryFrom<UntypedAssetId> for AssetId<A>
where A: Asset,

Source§

type Error = UntypedAssetIdConversionError

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

fn try_from( value: UntypedAssetId, ) -> Result<AssetId<A>, <AssetId<A> as TryFrom<UntypedAssetId>>::Error>

Performs the conversion.
Source§

impl<A> TypePath for AssetId<A>
where A: Asset + TypePath, AssetId<A>: 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<A> Typed for AssetId<A>
where A: Asset + TypePath, AssetId<A>: Any + Send + Sync, AssetIndex: FromReflect + TypePath + MaybeTyped + RegisterForReflection, Uuid: FromReflect + TypePath + MaybeTyped + RegisterForReflection,

Source§

fn type_info() -> &'static TypeInfo

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

impl<A> Copy for AssetId<A>
where A: Asset,

Source§

impl<A> Eq for AssetId<A>
where A: Asset,

Auto Trait Implementations§

§

impl<A> Freeze for AssetId<A>

§

impl<A> RefUnwindSafe for AssetId<A>

§

impl<A> Send for AssetId<A>

§

impl<A> Sync for AssetId<A>

§

impl<A> Unpin for AssetId<A>

§

impl<A> UnwindSafe for AssetId<A>

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<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<Q, K> Comparable<K> for Q
where Q: Ord + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn compare(&self, key: &K) -> Ordering

Compare self to key and return their ordering.
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<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> Serialize for T
where T: Serialize + ?Sized,

Source§

fn erased_serialize(&self, serializer: &mut dyn Serializer) -> Result<(), Error>

Source§

fn do_erased_serialize( &self, serializer: &mut dyn Serializer, ) -> Result<(), ErrorImpl>

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> ToSmolStr for T
where T: Display + ?Sized,

Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
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<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Source§

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

Source§

impl<N> NodeTrait for N
where N: Copy + Ord + Hash,

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,