Skip to main content

Resource

Trait Resource 

Source
pub trait Resource: Component { }
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_platform::cell::SyncCell;

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

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§

Source§

impl Resource for StaticTransformOptimizations

Source§

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

Source§

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

Source§

impl Resource for ManageAccessibilityUpdates

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

impl Resource for CompressedImageFormatSupport

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

impl Resource for IndirectParametersBuffersSettings

Source§

impl Resource for CameraMainPassTextureFormats

Source§

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

Source§

impl Resource for DirtyWireframeSpecializations

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

impl Resource for RenderAssetBytesPerFrameLimiter

Source§

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

Source§

impl Resource for DefaultImageSamplerDescriptor

Source§

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

Source§

impl Resource for SparseBufferUpdateBindGroups

Source§

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

Source§

impl Resource for SparseBufferUpdatePipelines

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

impl Resource for FallbackImageFormatMsaaCache

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

impl Resource for ScreenshotToScreenPipeline

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

impl<A> Resource for bevy::render::erased_render_asset::ExtractedAssets<A>
where A: ErasedRenderAsset, ExtractedAssets<A>: Send + Sync + 'static,

Source§

impl<A> Resource for bevy::render::erased_render_asset::PrepareNextFrameAssets<A>

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

impl<ERA> Resource for ErasedRenderAssets<ERA>
where ErasedRenderAssets<ERA>: Send + Sync + 'static,

Source§

impl<M> Resource for Messages<M>
where M: Message, Messages<M>: Send + Sync + 'static,

Source§

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

Source§

impl<PI> Resource for PhaseIndirectParametersBuffers<PI>
where PI: PhaseItem, PhaseIndirectParametersBuffers<PI>: Send + Sync + 'static,

Source§

impl<PI, BD> Resource for PhaseBatchedInstanceBuffers<PI, BD>
where PI: PhaseItem, BD: GpuArrayBufferable + Sync + Send + 'static, PhaseBatchedInstanceBuffers<PI, BD>: Send + Sync + 'static,

Source§

impl<S> Resource for SpecializedComputePipelines<S>

Source§

impl<S> Resource for SpecializedMeshPipelines<S>

Source§

impl<S> Resource for SpecializedRenderPipelines<S>

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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