[BUG] `DType::from` rejects `S16`, `U16` and `F16`
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 78/100
Piste de recherche
Commencez par la conversion de DType dans src/core/util.rs:76-81 et comparez sa plage de valeurs acceptées avec l’enum dans src/core/defines.rs:112-139. Suivez Array::get_type() dans array.rs:427-432 et vérifiez que S16, U16 et F16 ne provoquent plus de panic, y compris lors du formatage Debug d’un array ; les valeurs non reconnues doivent entraîner une erreur explicite.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
impl From<u32> for DType {
fn from(t: u32) -> Self {
assert!(DType::F32 as u32 <= t && t <= DType::U64 as u32);
unsafe { mem::transmute(t) }
}
}
The upper bound is DType::U64, which is 9. But the enum continues past it (src/core/defines.rs:112-139):
U64 = 9,
S16 = 10,
U16 = 11,
F16 = 12,
So the assert fires for three of the crate's own supported types. Array::get_type() (array.rs:427-432) is the caller, which means:
let a = randu::<half::f16>(dim4!(3, 3));
let t = a.get_type(); // panics
println!("{:?}", a); // panics — Debug impl calls get_type()
This is not a version-skew problem — it's wrong against a correct 3.8 library, and has been since f16 support was added. It's also the inverse mistake to the one in AfError::from: that assert is too loose, this one is too tight.
Fix: bound at DType::F16 as u32, or better, use an exhaustive match with a clear error for unrecognised values. Note ArrayFire 3.10 adds s8 = 13, so a match would future-proof this.
Found by Claude Opus 5. Verified manually.
- Langage dominant
- Rust
- Étoiles
- 827
- Forks
- 59
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Guide de contribution
Aucun guide de contribution indexé pour ce dépôt
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de arrayfire/arrayfire-rust
-
Bug
Difficulté 1/5 Moins d'une heure Accessibilité débutants 88/100
arrayfire/arrayfire-rust#388 ·
-
Bug
Difficulté 1/5 Moins d'une heure Accessibilité débutants 88/100
arrayfire/arrayfire-rust#387 ·
-
Bug
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
arrayfire/arrayfire-rust#384 ·
-
Bug
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 35/100
arrayfire/arrayfire-rust#385 · 1 commentaire ·
-
Bug
Difficulté 3/5 1-2 jours Accessibilité débutants 45/100
arrayfire/arrayfire-rust#382 ·
Toutes les issues de arrayfire/arrayfire-rust
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 84/100
Eynzof/Hermes-CN-Desktop#610 ·
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
gitbutlerapp/gitbutler#15998 · 1 commentaire ·
-
bug triage:deciding
Difficulté 1/5 Moins d'une heure Accessibilité débutants 88/100
open-telemetry/otel-arrow#4132 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 88/100
-
Difficulté 2/5 1-3 heures Accessibilité débutants 84/100