Trait bevy::ecs::system::Resource

pub trait Resource: Send + Sync + 'static { }
Expand description

A type that can be inserted into a World as a singleton.

You can access resource data in systems using the Res and ResMut system parameters

Only one resource of each type can be stored in a World at any given time.

§Examples

#[derive(Resource)]
struct MyResource { value: u32 }

world.insert_resource(MyResource { value: 42 });

fn read_resource_system(resource: Res<MyResource>) {
    assert_eq!(resource.value, 42);
}

fn write_resource_system(mut resource: ResMut<MyResource>) {
    assert_eq!(resource.value, 42);
    resource.value = 0;
    assert_eq!(resource.value, 0);
}

§!Sync Resources

A !Sync type cannot implement Resource. However, it is possible to wrap a Send but not Sync type in SyncCell or the currently unstable Exclusive to make it Sync. This forces only having mutable access (&mut T only, never &T), but makes it safe to reference across multiple threads.

This will fail to compile since RefCell is !Sync.


#[derive(Resource)]
struct NotSync {
   counter: RefCell<usize>,
}

This will compile since the RefCell is wrapped with SyncCell.

use bevy_utils::synccell::SyncCell;

#[derive(Resource)]
struct ActuallySync {
   counter: SyncCell<RefCell<usize>>,
}

Implementors§

§

impl Resource for ScreenSpaceTransmissionQuality

§

impl Resource for RenderMeshInstances
where RenderMeshInstances: Send + Sync + 'static,

§

impl Resource for GpuPreprocessingSupport
where GpuPreprocessingSupport: Send + Sync + 'static,

§

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

§

impl Resource for TimeUpdateStrategy
where TimeUpdateStrategy: Send + Sync + 'static,

§

impl Resource for AccessibilityRequested
where AccessibilityRequested: Send + Sync + 'static,

§

impl Resource for Focus
where Focus: Send + Sync + 'static,

§

impl Resource for ManageAccessibilityUpdates

§

impl Resource for FixedMainScheduleOrder
where FixedMainScheduleOrder: Send + Sync + 'static,

§

impl Resource for MainScheduleOrder
where MainScheduleOrder: Send + Sync + 'static,

§

impl Resource for EmbeddedAssetRegistry
where EmbeddedAssetRegistry: Send + Sync + 'static,

§

impl Resource for AssetSourceBuilders
where AssetSourceBuilders: Send + Sync + 'static,

§

impl Resource for AssetProcessor
where AssetProcessor: Send + Sync + 'static,

§

impl Resource for AssetServer
where AssetServer: Send + Sync + 'static,

§

impl Resource for DefaultSpatialScale
where DefaultSpatialScale: Send + Sync + 'static,

§

impl Resource for GlobalVolume
where GlobalVolume: Send + Sync + 'static,

§

impl Resource for FrameCount
where FrameCount: Send + Sync + 'static,

§

impl Resource for BlitPipeline
where BlitPipeline: Send + Sync + 'static,

§

impl Resource for CASPipeline
where CASPipeline: Send + Sync + 'static,

§

impl Resource for DepthOfFieldGlobalBindGroup

§

impl Resource for DepthOfFieldGlobalBindGroupLayout

§

impl Resource for FxaaPipeline
where FxaaPipeline: Send + Sync + 'static,

§

impl Resource for MotionBlurPipeline
where MotionBlurPipeline: Send + Sync + 'static,

§

impl Resource for TonemappingLuts
where TonemappingLuts: Send + Sync + 'static,

§

impl Resource for TonemappingPipeline
where TonemappingPipeline: Send + Sync + 'static,

§

impl Resource for CiTestingConfig
where CiTestingConfig: Send + Sync + 'static,

§

impl Resource for FpsOverlayConfig
where FpsOverlayConfig: Send + Sync + 'static,

§

impl Resource for UiDebugOptions
where UiDebugOptions: Send + Sync + 'static,

§

impl Resource for DiagnosticsStore
where DiagnosticsStore: Send + Sync + 'static,

§

impl Resource for SystemInfo
where SystemInfo: Send + Sync + 'static,

§

impl Resource for GizmoConfigStore
where GizmoConfigStore: Send + Sync + 'static,

§

impl Resource for GamepadSettings
where GamepadSettings: Send + Sync + 'static,

§

impl Resource for Gamepads
where Gamepads: Send + Sync + 'static,

§

impl Resource for Touches
where Touches: Send + Sync + 'static,

§

impl Resource for DeferredLightingLayout
where DeferredLightingLayout: Send + Sync + 'static,

§

impl Resource for AmbientLight
where AmbientLight: Send + Sync + 'static,

§

impl Resource for DefaultOpaqueRendererMethod

§

impl Resource for DirectionalLightShadowMap
where DirectionalLightShadowMap: Send + Sync + 'static,

§

impl Resource for FogMeta
where FogMeta: Send + Sync + 'static,

§

impl Resource for GlobalLightMeta
where GlobalLightMeta: Send + Sync + 'static,

§

impl Resource for GlobalVisiblePointLights
where GlobalVisiblePointLights: Send + Sync + 'static,

§

impl Resource for LightMeta
where LightMeta: Send + Sync + 'static,

§

impl Resource for LightProbesBuffer
where LightProbesBuffer: Send + Sync + 'static,

§

impl Resource for MeshBindGroups
where MeshBindGroups: Send + Sync + 'static,

§

impl Resource for MeshCullingDataBuffer
where MeshCullingDataBuffer: Send + Sync + 'static,

§

impl Resource for MeshPipeline
where MeshPipeline: Send + Sync + 'static,

§

impl Resource for MeshPipelineViewLayouts
where MeshPipelineViewLayouts: Send + Sync + 'static,

§

impl Resource for PointLightShadowMap
where PointLightShadowMap: Send + Sync + 'static,

§

impl Resource for PrepassViewBindGroup
where PrepassViewBindGroup: Send + Sync + 'static,

§

impl Resource for PreprocessPipelines
where PreprocessPipelines: Send + Sync + 'static,

§

impl Resource for PreviousViewUniforms
where PreviousViewUniforms: Send + Sync + 'static,

§

impl Resource for RenderLightmaps
where RenderLightmaps: Send + Sync + 'static,

§

impl Resource for ScreenSpaceReflectionsBuffer

§

impl Resource for ScreenSpaceReflectionsPipeline

§

impl Resource for ShadowSamplers
where ShadowSamplers: Send + Sync + 'static,

§

impl Resource for SkinUniform
where SkinUniform: Send + Sync + 'static,

§

impl Resource for VolumetricFogPipeline
where VolumetricFogPipeline: Send + Sync + 'static,

§

impl Resource for VolumetricFogUniformBuffer

§

impl Resource for WireframeConfig
where WireframeConfig: Send + Sync + 'static,

§

impl Resource for IndirectParametersBuffer
where IndirectParametersBuffer: Send + Sync + 'static,

§

impl Resource for ManualTextureViews
where ManualTextureViews: Send + Sync + 'static,

§

impl Resource for SortedCameras
where SortedCameras: Send + Sync + 'static,

§

impl Resource for GlobalsBuffer
where GlobalsBuffer: Send + Sync + 'static,

§

impl Resource for GlobalsUniform
where GlobalsUniform: Send + Sync + 'static,

§

impl Resource for MeshVertexBufferLayouts
where MeshVertexBufferLayouts: Send + Sync + 'static,

§

impl Resource for RenderAppChannels
where RenderAppChannels: Send + Sync + 'static,

§

impl Resource for ClearColor
where ClearColor: Send + Sync + 'static,

§

impl Resource for RenderAssetBytesPerFrame
where RenderAssetBytesPerFrame: Send + Sync + 'static,

§

impl Resource for RenderGraph
where RenderGraph: Send + Sync + 'static,

§

impl Resource for PipelineCache
where PipelineCache: Send + Sync + 'static,

§

impl Resource for RenderAdapter
where RenderAdapter: Send + Sync + 'static,

§

impl Resource for RenderAdapterInfo
where RenderAdapterInfo: Send + Sync + 'static,

§

impl Resource for RenderDevice
where RenderDevice: Send + Sync + 'static,

§

impl Resource for RenderInstance
where RenderInstance: Send + Sync + 'static,

§

impl Resource for RenderQueue
where RenderQueue: Send + Sync + 'static,

§

impl Resource for MainWorld
where MainWorld: Send + Sync + 'static,

§

impl Resource for DefaultImageSampler
where DefaultImageSampler: Send + Sync + 'static,

§

impl Resource for FallbackImage
where FallbackImage: Send + Sync + 'static,

§

impl Resource for FallbackImageCubemap
where FallbackImageCubemap: Send + Sync + 'static,

§

impl Resource for FallbackImageFormatMsaaCache

§

impl Resource for FallbackImageZero
where FallbackImageZero: Send + Sync + 'static,

§

impl Resource for TextureCache
where TextureCache: Send + Sync + 'static,

§

impl Resource for ExtractedWindows
where ExtractedWindows: Send + Sync + 'static,

§

impl Resource for RenderVisibilityRanges
where RenderVisibilityRanges: Send + Sync + 'static,

§

impl Resource for ViewUniforms
where ViewUniforms: Send + Sync + 'static,

§

impl Resource for VisibleEntityRanges
where VisibleEntityRanges: Send + Sync + 'static,

§

impl Resource for WindowSurfaces
where WindowSurfaces: Send + Sync + 'static,

§

impl Resource for ScreenshotManager
where ScreenshotManager: Send + Sync + 'static,

§

impl Resource for ScreenshotToScreenPipeline

§

impl Resource for SceneSpawner
where SceneSpawner: Send + Sync + 'static,

§

impl Resource for ExtractedSprites
where ExtractedSprites: Send + Sync + 'static,

§

impl Resource for ImageBindGroups
where ImageBindGroups: Send + Sync + 'static,

§

impl Resource for Mesh2dBindGroup
where Mesh2dBindGroup: Send + Sync + 'static,

§

impl Resource for Mesh2dPipeline
where Mesh2dPipeline: Send + Sync + 'static,

§

impl Resource for RenderMesh2dInstances
where RenderMesh2dInstances: Send + Sync + 'static,

§

impl Resource for SpriteAssetEvents
where SpriteAssetEvents: Send + Sync + 'static,

§

impl Resource for SpriteMeta
where SpriteMeta: Send + Sync + 'static,

§

impl Resource for SpritePipeline
where SpritePipeline: Send + Sync + 'static,

§

impl Resource for Wireframe2dConfig
where Wireframe2dConfig: Send + Sync + 'static,

§

impl Resource for FontAtlasSets
where FontAtlasSets: Send + Sync + 'static,

§

impl Resource for TextPipeline
where TextPipeline: Send + Sync + 'static,

§

impl Resource for TextSettings
where TextSettings: Send + Sync + 'static,

§

impl Resource for TimeReceiver
where TimeReceiver: Send + Sync + 'static,

§

impl Resource for TimeSender
where TimeSender: Send + Sync + 'static,

§

impl Resource for ExtractedUiNodes
where ExtractedUiNodes: Send + Sync + 'static,

§

impl Resource for UiImageBindGroups
where UiImageBindGroups: Send + Sync + 'static,

§

impl Resource for UiMeta
where UiMeta: Send + Sync + 'static,

§

impl Resource for UiPipeline
where UiPipeline: Send + Sync + 'static,

§

impl Resource for UiScale
where UiScale: Send + Sync + 'static,

§

impl Resource for UiStack
where UiStack: Send + Sync + 'static,

§

impl Resource for WinitActionHandlers
where WinitActionHandlers: Send + Sync + 'static,

§

impl Resource for WinitSettings
where WinitSettings: Send + Sync + 'static,

§

impl Resource for EventRegistry
where EventRegistry: Send + Sync + 'static,

§

impl Resource for AppTypeRegistry
where AppTypeRegistry: Send + Sync + 'static,

§

impl Resource for Schedules
where Schedules: Send + Sync + 'static,

§

impl Resource for MainThreadExecutor
where MainThreadExecutor: Send + Sync + 'static,

§

impl Resource for Stepping
where Stepping: Send + Sync + 'static,

§

impl<A> Resource for Assets<A>
where A: Asset, Assets<A>: Send + Sync + 'static,

§

impl<A> Resource for ExtractedAssets<A>
where A: RenderAsset, ExtractedAssets<A>: Send + Sync + 'static,

§

impl<A> Resource for PrepareNextFrameAssets<A>
where A: RenderAsset, PrepareNextFrameAssets<A>: Send + Sync + 'static,

§

impl<A> Resource for RenderAssets<A>
where A: RenderAsset, RenderAssets<A>: Send + Sync + 'static,

§

impl<BD> Resource for BatchedInstanceBuffer<BD>
where BD: GpuArrayBufferable + Sync + Send + 'static, BatchedInstanceBuffer<BD>: Send + Sync + 'static,

§

impl<BD, BDI> Resource for BatchedInstanceBuffers<BD, BDI>
where BD: GpuArrayBufferable + Sync + Send + 'static, BDI: Pod, BatchedInstanceBuffers<BD, BDI>: Send + Sync + 'static,

§

impl<BPI> Resource for ViewBinnedRenderPhases<BPI>
where BPI: BinnedPhaseItem, ViewBinnedRenderPhases<BPI>: Send + Sync + 'static,

§

impl<C> Resource for ComponentUniforms<C>
where C: Component + ShaderType, ComponentUniforms<C>: Send + Sync + 'static,

§

impl<Config, Clear> Resource for GizmoStorage<Config, Clear>
where GizmoStorage<Config, Clear>: Send + Sync + 'static,

§

impl<E> Resource for Events<E>
where E: Event, Events<E>: Send + Sync + 'static,

§

impl<EI> Resource for ExtractedInstances<EI>
where EI: ExtractInstance, ExtractedInstances<EI>: Send + Sync + 'static,

§

impl<M> Resource for MaterialPipeline<M>
where M: Material, MaterialPipeline<M>: Send + Sync + 'static,

§

impl<M> Resource for PrepassPipeline<M>
where M: Material, PrepassPipeline<M>: Send + Sync + 'static,

§

impl<M> Resource for Material2dPipeline<M>
where M: Material2d, Material2dPipeline<M>: Send + Sync + 'static,

§

impl<M> Resource for RenderMaterial2dInstances<M>
where M: Material2d, RenderMaterial2dInstances<M>: Send + Sync + 'static,

§

impl<M> Resource for ExtractedUiMaterialNodes<M>
where M: UiMaterial, ExtractedUiMaterialNodes<M>: Send + Sync + 'static,

§

impl<M> Resource for UiMaterialMeta<M>
where M: UiMaterial, UiMaterialMeta<M>: Send + Sync + 'static,

§

impl<M> Resource for UiMaterialPipeline<M>
where M: UiMaterial, UiMaterialPipeline<M>: Send + Sync + 'static,

§

impl<P> Resource for DrawFunctions<P>
where P: PhaseItem, DrawFunctions<P>: Send + Sync + 'static,

§

impl<S> Resource for NextState<S>
where S: FreelyMutableState, NextState<S>: Send + Sync + 'static,

§

impl<S> Resource for SpecializedComputePipelines<S>

§

impl<S> Resource for SpecializedMeshPipelines<S>

§

impl<S> Resource for SpecializedRenderPipelines<S>

§

impl<S> Resource for State<S>
where S: States, State<S>: Send + Sync + 'static,

§

impl<SPI> Resource for ViewSortedRenderPhases<SPI>
where SPI: SortedPhaseItem, ViewSortedRenderPhases<SPI>: Send + Sync + 'static,

§

impl<T> Resource for GpuArrayBuffer<T>
where T: GpuArrayBufferable, GpuArrayBuffer<T>: Send + Sync + 'static,

§

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

§

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

§

impl<T> Resource for ButtonInput<T>
where T: Copy + Eq + Hash + Send + Sync + 'static, ButtonInput<T>: Send + Sync + 'static,

§

impl<T> Resource for Time<T>
where T: Default, Time<T>: Send + Sync + 'static,