`PartialOrd` doesn't work with new type
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 35/100
Direzione di ricerca
Inizia con la riproduzione in crates/farmer/ab-proof-of-space-gpu/src/shader/sort_buckets.rs, soprattutto con il CustomPosition derive alla riga 17 e il confronto alla riga 80. Confronta il percorso PartialOrd generato per CustomPosition con il confronto diretto di u32, quindi esamina la gestione della capacità Int8 indesiderata; il lavoro è completato quando i confronti tra newtype compilano senza richiedere Int8.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
I have the following trivial new type:
#[derive(Debug, Clone, Copy, Ord, PartialOrd, Eq, PartialEq, From, Into)]
pub struct CustomPosition(u32);
When trying to compare two values of this type, I'm getting an error:
error: `i8` type used without `OpCapability Int8`
|
note: used from within `<u32 as core::cmp::PartialOrd>::partial_cmp`
--> /home/nazar-pc/.rustup/toolchains/nightly-2025-06-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/cmp.rs:1989:5
|
1989 | ord_impl! { char usize u8 u16 u32 u64 u128 isize i8 i16 i32 i64 i128 }
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
note: called by `<ab_proof_of_space_gpu::shader::sort_buckets::CustomPosition as core::cmp::PartialOrd>::partial_cmp`
--> crates/farmer/ab-proof-of-space-gpu/src/shader/sort_buckets.rs:17:35
|
17 | #[derive(Debug, Clone, Copy, Ord, PartialOrd, Eq, PartialEq, From, Into)]
| ^^^^^^^^^^
note: called by `<ab_proof_of_space_gpu::shader::sort_buckets::CustomPosition as core::cmp::PartialOrd>::le`
--> /home/nazar-pc/.rustup/toolchains/nightly-2025-06-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/cmp.rs:1403:14
|
1403 | self.partial_cmp(other).is_some_and(Ordering::is_le)
| ^^^^^^^^^^^^^^^^^^
note: called by `ab_proof_of_space_gpu::shader::sort_buckets::perform_compare_swap`
--> crates/farmer/ab-proof-of-space-gpu/src/shader/sort_buckets.rs:80:32
|
80 | let (smaller, larger) = if a <= b { (a, b) } else { (b, a) };
| ^^^^^^
At the same time, comparison of u32 directly works fine and doesn't require Int8 capability.
While this is likely related to discussion in https://github.com/Rust-GPU/rust-gpu/issues/307, I think it is distinct enough to be reported separately.
- Lingua principale
- Rust
- Stelle
- 3.4k
- Fork
- 126
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di Rust-GPU/rust-gpu
-
enhancement
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 68/100
-
enhancement
Rust-GPU/rust-gpu#643 · 2 commenti · 1 reazione · 1 assegnatario ·
-
bug
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
-
bug
Difficoltà 3/5 1-2 giorni Idoneità per principianti 48/100
-
async functions cause ICE Apertabug
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
Tutte le issue di Rust-GPU/rust-gpu
Issue simili
-
risk:low runtime status:in-progress type:test
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 92/100
zeroclaw-labs/zeroclaw#11023 ·
-
good first issue refactor
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
EricSpencer00/Resilient#4835 · 1 commento ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
bisq-network/bisq-musig#204 ·
-
agent:ready documentation
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
cesarferreira/stax#890 ·