bevyengine / bevyengine/bevy

Add a Unsafe method for splitting access in a system

Open
#14,191 0 comments 0 reactions 0 assignees View on GitHub
A-ECS C-Feature D-Complex X-Uncontroversial
Dominant language
Rust
Stars
48.2k
Forks
4.8k
Avg merge
3d 16h
Merged PRs (30d)
171

Description

## What problem does this solve or what need does it fill?

We have `ParamSet` for safely switching access between 2 system params that conflict with each other, but we don't have a way of doing the same thing unsafely, when the user knows that the access won't conflict. For example this happens with a query with `EntityMut` and any resources. This could be an easy escape hatch of that situation, but also probably has other uses.

## What solution would you like?

Either add unsafe accessors to ParamSet or a new SystemParam with unsafe accessors. One reason we might not want to add this is that ParamSet has a combinatorial level of code gen.

Contributor guide

Open the contributing guide

Research direction

Start by reading the existing ParamSet and SystemParam implementations to understand how conflicting access is handled and where code generation is involved. Compare the two proposed approaches, then define done as providing an unsafe way to split access for known non-conflicting cases such as EntityMut with resources.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
game-dev
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.