bytecodealliance / bytecodealliance/wit-bindgen

Handling of typenames that match Rust typenames

Offen
#146 3 Kommentare 1 Reaktion 0 zugewiesene Personen Auf GitHub ansehen
gen-rust
Vorherrschende Sprache
Rust
Sterne
1.5k
Forks
286
Ø Merge
6 Std. 32 Min.
Gemergte PRs (30 T.)
19

Beschreibung

Here is the minimal wit file:
```wit
record result {
data: list,
}

func: function() -> expected
```

Which yields the following error:
```
error[E0107]: this struct takes 0 generic arguments but 2 generic arguments were supplied
--> sdk/src/client.rs:1:1
|
1 | wit_bindgen_rust::import!("./wit/some.wit");
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^- help: remove these generics
| |
| expected 0 generic arguments
|
note: struct defined here, with 0 generic parameters
--> sdk/src/client.rs:1:1
|
1 | wit_bindgen_rust::import!("./wit/some.wit");
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
= note: this error originates in the macro `wit_bindgen_rust::import` (in Nightly builds, run with -Z macro-backtrace for more info)
```

It wasn't obvious what's going on, but the generated code contains the following:
```rust
pub fn func() -> Result{
```

We wit-bindgen should either emit some warnings/errors, or perhaps use full paths like `::core::result::Result`? The latter is common in macros for any other types, but I think it's not common for `Result` and `Option`, so not sure what is the best option.

The issue is pretty minor, though.

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Rechercherichtung

Reproduzieren Sie das minimale WIT-Beispiel und untersuchen Sie die von wit_bindgen_rust::import! erzeugte sdk/src/client.rs, insbesondere die Signatur Result. Verfolgen Sie, wo die Namen der generierten Typen ausgewählt werden; erledigt ist die Aufgabe, wenn das Beispiel nicht mehr mit Rusts Result-Typ kollidiert und ohne den gemeldeten Fehler E0107 kompiliert.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
rust
Bereich
tooling
Issue-Typ
Bug
Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.