cpubits: single 16 => { ... } macro arm fails expansion with error: no rules expected ','

Aperta Adatta ai principianti
#1,597 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
2/5
Tempo stimato
1-3 ore
Idoneità per principianti
82/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
rust
Ambito
backend

Direzione di ricerca

Inizia individuando la definizione della macro cpubits! nel crate cpubits e confronta il percorso di espansione di 16 => { ... } con le forme funzionanti a ramo singolo 32 e 64. La riproduzione nell’issue è la prima cosa da compilare; il lavoro è concluso quando compila e le forme funzionanti elencate continuano a compilare.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Component

cpubits (v0.1.1)

Description

Calling the cpubits! macro with only the 16-bit branch (single 16) fails to expand at compile time with a syntax error. Other single-branch forms (32 => { ... } and 64 => { ... }), pairs, and the full triple compile as expected.

Minimal Reproduction Example
use cpubits::cpubits;

cpubits! {
    16 => {
        pub type Word = u16;
    }
}

fn main() {}
Compiler Output
error: no rules expected `,`
 --> src/main.rs:3:1
  |
3 | / cpubits! {
4 | |     16 => {
5 | |         pub type Word = u16;
6 | |     }
7 | | }
  | |_^ no rules expected this token in macro call
  |
  = note: this error originates in the macro `cpubits::cpubits`
Root Cause

During macro expansion of the single 16 => { ... } pattern, the macro inserts a comma after its first generated branch, but the internal two-branch/downstream matcher in cpubits! does not accept a comma at that position.

Observed shapes probe results:

  • single16: ❌ exit 1 (error: no rules expected ',')
  • single32: ✅ exit 0
  • single64: ✅ exit 0
  • group16_32: ✅ exit 0
  • group32_64: ✅ exit 0
  • pair16_32: ✅ exit 0
  • pair32_64: ✅ exit 0
  • triple: ✅ exit 0
Lingua principale
Rust
Stelle
688
Fork
177
Merge medio
2h 31m
PR unite (30g)
31

Preparare l'ambiente

Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di RustCrypto/utils

Tutte le issue di RustCrypto/utils

Issue simili

Altre issue su Rust

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.