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.
Implementations§
Source§impl<A> AssetId<A>where
A: Asset,
impl<A> AssetId<A>where
A: Asset,
Sourcepub const DEFAULT_UUID: Uuid
pub const DEFAULT_UUID: Uuid
Sourcepub const INVALID_UUID: Uuid
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!
Sourcepub const fn invalid() -> AssetId<A>
pub const fn invalid() -> AssetId<A>
Returns an AssetId
with Self::INVALID_UUID
, which should never be assigned to.
Examples found in repository?
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
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}
Sourcepub fn untyped(self) -> UntypedAssetId
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?
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
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<'de, A> Deserialize<'de> for AssetId<A>where
A: Asset,
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>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<AssetId<A>, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
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,
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)>
fn field(&self, __name_param: &str) -> Option<&(dyn PartialReflect + 'static)>
Source§fn field_at(
&self,
__index_param: usize,
) -> Option<&(dyn PartialReflect + 'static)>
fn field_at( &self, __index_param: usize, ) -> Option<&(dyn PartialReflect + 'static)>
Source§fn field_mut(
&mut self,
__name_param: &str,
) -> Option<&mut (dyn PartialReflect + 'static)>
fn field_mut( &mut self, __name_param: &str, ) -> Option<&mut (dyn PartialReflect + 'static)>
Source§fn field_at_mut(
&mut self,
__index_param: usize,
) -> Option<&mut (dyn PartialReflect + 'static)>
fn field_at_mut( &mut self, __index_param: usize, ) -> Option<&mut (dyn PartialReflect + 'static)>
Source§fn index_of(&self, __name_param: &str) -> Option<usize>
fn index_of(&self, __name_param: &str) -> Option<usize>
Source§fn name_at(&self, __index_param: usize) -> Option<&str>
fn name_at(&self, __index_param: usize) -> Option<&str>
Source§fn iter_fields(&self) -> VariantFieldIter<'_> ⓘ
fn iter_fields(&self) -> VariantFieldIter<'_> ⓘ
Source§fn variant_name(&self) -> &str
fn variant_name(&self) -> &str
Source§fn variant_index(&self) -> usize
fn variant_index(&self) -> usize
Source§fn variant_type(&self) -> VariantType
fn variant_type(&self) -> VariantType
Source§fn to_dynamic_enum(&self) -> DynamicEnum
fn to_dynamic_enum(&self) -> DynamicEnum
DynamicEnum
from this enum.Source§fn clone_dynamic(&self) -> DynamicEnum
fn clone_dynamic(&self) -> DynamicEnum
to_dynamic_enum
insteadSource§fn is_variant(&self, variant_type: VariantType) -> bool
fn is_variant(&self, variant_type: VariantType) -> bool
Source§fn variant_path(&self) -> String
fn variant_path(&self) -> String
Source§impl From<&AnimationGraphHandle> for AssetId<AnimationGraph>
impl From<&AnimationGraphHandle> for AssetId<AnimationGraph>
Source§fn from(handle: &AnimationGraphHandle) -> AssetId<AnimationGraph>
fn from(handle: &AnimationGraphHandle) -> AssetId<AnimationGraph>
Source§impl<M> From<&MaterialNode<M>> for AssetId<M>where
M: UiMaterial,
impl<M> From<&MaterialNode<M>> for AssetId<M>where
M: UiMaterial,
Source§fn from(material: &MaterialNode<M>) -> AssetId<M>
fn from(material: &MaterialNode<M>) -> AssetId<M>
Source§impl<M> From<&MeshMaterial2d<M>> for AssetId<M>where
M: Material2d,
impl<M> From<&MeshMaterial2d<M>> for AssetId<M>where
M: Material2d,
Source§fn from(material: &MeshMaterial2d<M>) -> AssetId<M>
fn from(material: &MeshMaterial2d<M>) -> AssetId<M>
Source§impl<M> From<&MeshMaterial3d<M>> for AssetId<M>where
M: Material,
impl<M> From<&MeshMaterial3d<M>> for AssetId<M>where
M: Material,
Source§fn from(material: &MeshMaterial3d<M>) -> AssetId<M>
fn from(material: &MeshMaterial3d<M>) -> AssetId<M>
Source§impl From<&MeshletMesh3d> for AssetId<MeshletMesh>
impl From<&MeshletMesh3d> for AssetId<MeshletMesh>
Source§fn from(mesh: &MeshletMesh3d) -> AssetId<MeshletMesh>
fn from(mesh: &MeshletMesh3d) -> AssetId<MeshletMesh>
Source§impl<A> From<(AssetIndex, PhantomData<fn() -> A>)> for AssetId<A>where
A: Asset,
impl<A> From<(AssetIndex, PhantomData<fn() -> A>)> for AssetId<A>where
A: Asset,
Source§fn from(value: (AssetIndex, PhantomData<fn() -> A>)) -> AssetId<A>
fn from(value: (AssetIndex, PhantomData<fn() -> A>)) -> AssetId<A>
Source§impl From<AnimationGraphHandle> for AssetId<AnimationGraph>
impl From<AnimationGraphHandle> for AssetId<AnimationGraph>
Source§fn from(handle: AnimationGraphHandle) -> AssetId<AnimationGraph>
fn from(handle: AnimationGraphHandle) -> AssetId<AnimationGraph>
Source§impl<A> From<AssetId<A>> for UntypedAssetIdwhere
A: Asset,
impl<A> From<AssetId<A>> for UntypedAssetIdwhere
A: Asset,
Source§fn from(value: AssetId<A>) -> UntypedAssetId
fn from(value: AssetId<A>) -> UntypedAssetId
Source§impl<A> From<AssetIndex> for AssetId<A>where
A: Asset,
impl<A> From<AssetIndex> for AssetId<A>where
A: Asset,
Source§fn from(value: AssetIndex) -> AssetId<A>
fn from(value: AssetIndex) -> AssetId<A>
Source§impl<M> From<MaterialNode<M>> for AssetId<M>where
M: UiMaterial,
impl<M> From<MaterialNode<M>> for AssetId<M>where
M: UiMaterial,
Source§fn from(material: MaterialNode<M>) -> AssetId<M>
fn from(material: MaterialNode<M>) -> AssetId<M>
Source§impl<M> From<MeshMaterial2d<M>> for AssetId<M>where
M: Material2d,
impl<M> From<MeshMaterial2d<M>> for AssetId<M>where
M: Material2d,
Source§fn from(material: MeshMaterial2d<M>) -> AssetId<M>
fn from(material: MeshMaterial2d<M>) -> AssetId<M>
Source§impl<M> From<MeshMaterial3d<M>> for AssetId<M>where
M: Material,
impl<M> From<MeshMaterial3d<M>> for AssetId<M>where
M: Material,
Source§fn from(material: MeshMaterial3d<M>) -> AssetId<M>
fn from(material: MeshMaterial3d<M>) -> AssetId<M>
Source§impl From<MeshletMesh3d> for AssetId<MeshletMesh>
impl From<MeshletMesh3d> for AssetId<MeshletMesh>
Source§fn from(mesh: MeshletMesh3d) -> AssetId<MeshletMesh>
fn from(mesh: MeshletMesh3d) -> AssetId<MeshletMesh>
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,
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§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,
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§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,
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§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,
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>>
fn from_reflect(__param0: &(dyn PartialReflect + 'static)) -> Option<AssetId<A>>
Self
from a reflected value.Source§fn take_from_reflect(
reflect: Box<dyn PartialReflect>,
) -> Result<Self, Box<dyn PartialReflect>>
fn take_from_reflect( reflect: Box<dyn PartialReflect>, ) -> Result<Self, Box<dyn PartialReflect>>
Self
using,
constructing the value using from_reflect
if that fails. Read moreSource§impl<A> GetOwnership for &AssetId<A>where
A: Asset + TypePath,
AssetId<A>: Any + Send + Sync,
AssetIndex: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
Uuid: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
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§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,
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§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,
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§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,
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
fn get_type_registration() -> TypeRegistration
TypeRegistration
for this type.Source§fn register_type_dependencies(registry: &mut TypeRegistry)
fn register_type_dependencies(registry: &mut TypeRegistry)
Source§impl<A> IntoReturn for &AssetId<A>where
A: Asset + TypePath,
AssetId<A>: Any + Send + Sync,
AssetIndex: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
Uuid: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
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§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,
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§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,
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§impl<A> Ord for AssetId<A>where
A: Asset,
impl<A> Ord for AssetId<A>where
A: Asset,
1.21.0 · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
Source§impl<A> PartialOrd<AssetId<A>> for UntypedAssetIdwhere
A: Asset,
impl<A> PartialOrd<AssetId<A>> for UntypedAssetIdwhere
A: Asset,
Source§impl<A> PartialOrd<UntypedAssetId> for AssetId<A>where
A: Asset,
impl<A> PartialOrd<UntypedAssetId> for AssetId<A>where
A: Asset,
Source§impl<A> PartialOrd for AssetId<A>where
A: Asset,
impl<A> PartialOrd for AssetId<A>where
A: Asset,
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,
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>
fn get_represented_type_info(&self) -> Option<&'static TypeInfo>
Source§fn try_apply(
&mut self,
__value_param: &(dyn PartialReflect + 'static),
) -> Result<(), ApplyError>
fn try_apply( &mut self, __value_param: &(dyn PartialReflect + 'static), ) -> Result<(), ApplyError>
Source§fn reflect_kind(&self) -> ReflectKind
fn reflect_kind(&self) -> ReflectKind
Source§fn reflect_ref(&self) -> ReflectRef<'_>
fn reflect_ref(&self) -> ReflectRef<'_>
Source§fn reflect_mut(&mut self) -> ReflectMut<'_>
fn reflect_mut(&mut self) -> ReflectMut<'_>
Source§fn reflect_owned(self: Box<AssetId<A>>) -> ReflectOwned
fn reflect_owned(self: Box<AssetId<A>>) -> ReflectOwned
Source§fn try_into_reflect(
self: Box<AssetId<A>>,
) -> Result<Box<dyn Reflect>, Box<dyn PartialReflect>>
fn try_into_reflect( self: Box<AssetId<A>>, ) -> Result<Box<dyn Reflect>, Box<dyn PartialReflect>>
Source§fn try_as_reflect(&self) -> Option<&(dyn Reflect + 'static)>
fn try_as_reflect(&self) -> Option<&(dyn Reflect + 'static)>
Source§fn try_as_reflect_mut(&mut self) -> Option<&mut (dyn Reflect + 'static)>
fn try_as_reflect_mut(&mut self) -> Option<&mut (dyn Reflect + 'static)>
Source§fn into_partial_reflect(self: Box<AssetId<A>>) -> Box<dyn PartialReflect>
fn into_partial_reflect(self: Box<AssetId<A>>) -> Box<dyn PartialReflect>
Source§fn as_partial_reflect(&self) -> &(dyn PartialReflect + 'static)
fn as_partial_reflect(&self) -> &(dyn PartialReflect + 'static)
Source§fn as_partial_reflect_mut(&mut self) -> &mut (dyn PartialReflect + 'static)
fn as_partial_reflect_mut(&mut self) -> &mut (dyn PartialReflect + 'static)
Source§fn reflect_hash(&self) -> Option<u64>
fn reflect_hash(&self) -> Option<u64>
Source§fn reflect_partial_eq(
&self,
value: &(dyn PartialReflect + 'static),
) -> Option<bool>
fn reflect_partial_eq( &self, value: &(dyn PartialReflect + 'static), ) -> Option<bool>
Source§fn debug(&self, f: &mut Formatter<'_>) -> Result<(), Error>
fn debug(&self, f: &mut Formatter<'_>) -> Result<(), Error>
Source§fn reflect_clone(&self) -> Result<Box<dyn Reflect>, ReflectCloneError>
fn reflect_clone(&self) -> Result<Box<dyn Reflect>, ReflectCloneError>
Self
using reflection. Read moreSource§fn apply(&mut self, value: &(dyn PartialReflect + 'static))
fn apply(&mut self, value: &(dyn PartialReflect + 'static))
Source§fn clone_value(&self) -> Box<dyn PartialReflect>
fn clone_value(&self) -> Box<dyn PartialReflect>
reflect_clone
. To convert reflected values to dynamic ones, use to_dynamic
.Self
into its dynamic representation. Read moreSource§fn to_dynamic(&self) -> Box<dyn PartialReflect>
fn to_dynamic(&self) -> Box<dyn PartialReflect>
Source§fn is_dynamic(&self) -> bool
fn is_dynamic(&self) -> bool
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,
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>
fn into_any(self: Box<AssetId<A>>) -> Box<dyn Any>
Box<dyn Any>
. Read moreSource§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut dyn Any
. Read moreSource§fn into_reflect(self: Box<AssetId<A>>) -> Box<dyn Reflect>
fn into_reflect(self: Box<AssetId<A>>) -> Box<dyn Reflect>
Source§fn as_reflect(&self) -> &(dyn Reflect + 'static)
fn as_reflect(&self) -> &(dyn Reflect + 'static)
Source§fn as_reflect_mut(&mut self) -> &mut (dyn Reflect + 'static)
fn as_reflect_mut(&mut self) -> &mut (dyn Reflect + 'static)
Source§impl<A> Serialize for AssetId<A>where
A: Asset,
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,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
Source§impl<A> TryFrom<UntypedAssetId> for AssetId<A>where
A: Asset,
impl<A> TryFrom<UntypedAssetId> for AssetId<A>where
A: Asset,
Source§type Error = UntypedAssetIdConversionError
type Error = UntypedAssetIdConversionError
Source§fn try_from(
value: UntypedAssetId,
) -> Result<AssetId<A>, <AssetId<A> as TryFrom<UntypedAssetId>>::Error>
fn try_from( value: UntypedAssetId, ) -> Result<AssetId<A>, <AssetId<A> as TryFrom<UntypedAssetId>>::Error>
Source§impl<A> TypePath for AssetId<A>
impl<A> TypePath for AssetId<A>
Source§fn type_path() -> &'static str
fn type_path() -> &'static str
Source§fn short_type_path() -> &'static str
fn short_type_path() -> &'static str
Source§fn type_ident() -> Option<&'static str>
fn type_ident() -> Option<&'static str>
Source§fn crate_name() -> Option<&'static str>
fn crate_name() -> Option<&'static str>
Source§impl<A> Typed for AssetId<A>where
A: Asset + TypePath,
AssetId<A>: Any + Send + Sync,
AssetIndex: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
Uuid: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
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,
impl<A> Copy for AssetId<A>where
A: Asset,
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, U> AsBindGroupShaderType<U> for T
impl<T, U> AsBindGroupShaderType<U> for T
Source§fn as_bind_group_shader_type(&self, _images: &RenderAssets<GpuImage>) -> U
fn as_bind_group_shader_type(&self, _images: &RenderAssets<GpuImage>) -> U
T
ShaderType
for self
. When used in AsBindGroup
derives, it is safe to assume that all images in self
exist.Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Comparable<K> for Q
impl<Q, K> Comparable<K> for Q
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
, which can then be
downcast
into Box<dyn ConcreteType>
where ConcreteType
implements Trait
.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
, which can then be further
downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.Source§impl<T> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> DynamicTypePath for Twhere
T: TypePath,
impl<T> DynamicTypePath for Twhere
T: TypePath,
Source§fn reflect_type_path(&self) -> &str
fn reflect_type_path(&self) -> &str
TypePath::type_path
.Source§fn reflect_short_type_path(&self) -> &str
fn reflect_short_type_path(&self) -> &str
Source§fn reflect_type_ident(&self) -> Option<&str>
fn reflect_type_ident(&self) -> Option<&str>
TypePath::type_ident
.Source§fn reflect_crate_name(&self) -> Option<&str>
fn reflect_crate_name(&self) -> Option<&str>
TypePath::crate_name
.Source§fn reflect_module_path(&self) -> Option<&str>
fn reflect_module_path(&self) -> Option<&str>
Source§impl<T> DynamicTyped for Twhere
T: Typed,
impl<T> DynamicTyped for Twhere
T: Typed,
Source§fn reflect_type_info(&self) -> &'static TypeInfo
fn reflect_type_info(&self) -> &'static TypeInfo
Typed::type_info
.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.Source§impl<T> FmtForward for T
impl<T> FmtForward for T
Source§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self
to use its Binary
implementation when Debug
-formatted.Source§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self
to use its Display
implementation when
Debug
-formatted.Source§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self
to use its LowerExp
implementation when
Debug
-formatted.Source§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self
to use its LowerHex
implementation when
Debug
-formatted.Source§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self
to use its Octal
implementation when Debug
-formatted.Source§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self
to use its Pointer
implementation when
Debug
-formatted.Source§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self
to use its UpperExp
implementation when
Debug
-formatted.Source§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self
to use its UpperHex
implementation when
Debug
-formatted.Source§impl<S> FromSample<S> for S
impl<S> FromSample<S> for S
fn from_sample_(s: S) -> S
Source§impl<T> FromWorld for Twhere
T: Default,
impl<T> FromWorld for Twhere
T: Default,
Source§fn from_world(_world: &mut World) -> T
fn from_world(_world: &mut World) -> T
Creates Self
using default()
.
Source§impl<T> GetPath for T
impl<T> GetPath for T
Source§fn reflect_path<'p>(
&self,
path: impl ReflectPath<'p>,
) -> Result<&(dyn PartialReflect + 'static), ReflectPathError<'p>>
fn reflect_path<'p>( &self, path: impl ReflectPath<'p>, ) -> Result<&(dyn PartialReflect + 'static), ReflectPathError<'p>>
path
. Read moreSource§fn reflect_path_mut<'p>(
&mut self,
path: impl ReflectPath<'p>,
) -> Result<&mut (dyn PartialReflect + 'static), ReflectPathError<'p>>
fn reflect_path_mut<'p>( &mut self, path: impl ReflectPath<'p>, ) -> Result<&mut (dyn PartialReflect + 'static), ReflectPathError<'p>>
path
. Read moreSource§fn path<'p, T>(
&self,
path: impl ReflectPath<'p>,
) -> Result<&T, ReflectPathError<'p>>where
T: Reflect,
fn path<'p, T>(
&self,
path: impl ReflectPath<'p>,
) -> Result<&T, ReflectPathError<'p>>where
T: Reflect,
path
. Read moreSource§fn path_mut<'p, T>(
&mut self,
path: impl ReflectPath<'p>,
) -> Result<&mut T, ReflectPathError<'p>>where
T: Reflect,
fn path_mut<'p, T>(
&mut self,
path: impl ReflectPath<'p>,
) -> Result<&mut T, ReflectPathError<'p>>where
T: Reflect,
path
. Read moreSource§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§impl<F, T> IntoSample<T> for Fwhere
T: FromSample<F>,
impl<F, T> IntoSample<T> for Fwhere
T: FromSample<F>,
fn into_sample(self) -> T
Source§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
Source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Source§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read moreSource§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read moreSource§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
Source§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
Source§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self
, then passes self.as_ref()
into the pipe function.Source§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self
, then passes self.as_mut()
into the pipe
function.Source§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self
, then passes self.deref()
into the pipe function.Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<R, P> ReadPrimitive<R> for P
impl<R, P> ReadPrimitive<R> for P
Source§fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
ReadEndian::read_from_little_endian()
.Source§impl<T> Serialize for T
impl<T> Serialize for T
fn erased_serialize(&self, serializer: &mut dyn Serializer) -> Result<(), Error>
fn do_erased_serialize( &self, serializer: &mut dyn Serializer, ) -> Result<(), ErrorImpl>
Source§impl<T> Tap for T
impl<T> Tap for T
Source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B>
of a value. Read moreSource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B>
of a value. Read moreSource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R>
view of a value. Read moreSource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R>
view of a value. Read moreSource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target
of a value. Read moreSource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target
of a value. Read moreSource§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap()
only in debug builds, and is erased in release builds.Source§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut()
only in debug builds, and is erased in release
builds.Source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow()
only in debug builds, and is erased in release
builds.Source§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut()
only in debug builds, and is erased in release
builds.Source§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref()
only in debug builds, and is erased in release
builds.Source§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut()
only in debug builds, and is erased in release
builds.Source§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref()
only in debug builds, and is erased in release
builds.