Can't use `usize::unchecked_mul()` because "checked mul is not supported yet"
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 48/100
Línea de trabajo
Reproduce el fallo de compilación del shader y, después, empieza en core/src/num/mod.rs y sigue usize::unchecked_mul a través de assert_unsafe_precondition! y overflowing_mul. Compara ese recorrido con Layout::repeat y determina si la compatibilidad con la multiplicación comprobada o la desactivación de las precondiciones unsafe resuelve el error notificado; se considera terminado cuando el reproductor compila correctamente.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
I've stumbled upon this while trying to use core::alloc::Layout type in my shader code.
You see, Layout::repeat() function uses checked math to return an error, but in my case this should not be possible, so I've reimplemented it using usize::unchecked_mul().
I expected my code to compile, but got this compiler error instead:
error: checked mul is not supported yet
--> ***\.rustup\toolchains\nightly-2025-06-30-x86_64-pc-windows-msvc\lib\rustlib\src\rust\library\core\src\num\mod.rs:1224:5
|
1224 | / uint_impl! {
1225 | | Self = usize,
1226 | | ActualT = u32,
1227 | | SignedT = isize,
... |
1241 | | bound_condition = " on 32-bit targets",
1242 | | }
| |_____^
|
note: used from within `<usize>::overflowing_mul`
--> ***\.rustup\toolchains\nightly-2025-06-30-x86_64-pc-windows-msvc\lib\rustlib\src\rust\library\core\src\num\mod.rs:1224:5
|
1224 | / uint_impl! {
1225 | | Self = usize,
1226 | | ActualT = u32,
1227 | | SignedT = isize,
... |
1241 | | bound_condition = " on 32-bit targets",
1242 | | }
| |_____^
note: called by `<usize>::unchecked_mul::precondition_check`
--> ***\.rustup\toolchains\nightly-2025-06-30-x86_64-pc-windows-msvc\lib\rustlib\src\rust\library\core\src\num\mod.rs:1224:5
|
1224 | / uint_impl! {
1225 | | Self = usize,
1226 | | ActualT = u32,
1227 | | SignedT = isize,
... |
1241 | | bound_condition = " on 32-bit targets",
1242 | | }
| |_____^
note: called by `<usize>::unchecked_mul`
--> ***\.rustup\toolchains\nightly-2025-06-30-x86_64-pc-windows-msvc\lib\rustlib\src\rust\library\core\src\num\mod.rs:1224:5
|
1224 | / uint_impl! {
1225 | | Self = usize,
1226 | | ActualT = u32,
1227 | | SignedT = isize,
... |
1241 | | bound_condition = " on 32-bit targets",
1242 | | }
| |_____^
note:
I guess it tries to compile assert_unsafe_precondition! macro call which contains a call to usize::overflowing_mul() (which is used to do checked multiplication), and fails to do so.
I thought it should be compiled out because I'm compiling my shader in release mode (as by default) which suggests that debug_assertions are set to false (which should disable unsafe preconditions), but it seems this is not the case here.
I think it will be best to resolve such issue by implementing checked mul (as it is already implemented in Zig SPIR-V compiler, which I guess was the inspiration for rust-gpu's checked math functions)...
But if it is possible to disable unsafe preconditions completely, I can do just that.
- Lenguaje dominante
- Rust
- Estrellas
- 3.4k
- Forks
- 126
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de Rust-GPU/rust-gpu
-
enhancement
Dificultad 1/5 Menos de una hora Aptitud para principiantes 68/100
-
glam v0.33.6 breaks `Vec3A` Abiertobug
-
enhancement
Rust-GPU/rust-gpu#643 · 3 comentarios · 1 reacción · 1 asignado ·
-
bug
Dificultad 4/5 3-5 días Aptitud para principiantes 48/100
-
bug
Dificultad 3/5 1-2 días Aptitud para principiantes 48/100
Todos los issues de Rust-GPU/rust-gpu
Issues similares
-
bug
Dificultad 1/5 Menos de una hora Aptitud para principiantes 85/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
yantrikos/yantrik-os#255 ·
-
Replayed reasoning items send "content": null, which the Responses API schema does not permit Abiertobug CLI custom-model
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
raphamorim/rio#1956 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
rust-bitcoin/rust-bitcoin#6930 · 1 comentario ·