Skip to content

Conflicting implementations of StreamPayload #1432

@alexcrichton

Description

@alexcrichton

This:

wit_bindgen::generate!({
    inline: r#"
        package a:b;

        world w {
            import i;
            export i;
        }

        interface i {
            use t.{r};
            f: func(p: stream<r>);
        }

        interface t {
            record r {
                x: u32,
            }
        }
    "#,
});

fn main() {}

fails with:

$ cargo build --target wasm32-wasip1
   Compiling wat v0.1.0 (/home/alex/code/wat)
error[E0119]: conflicting implementations of trait `StreamPayload` for type `t::R`
  --> src/main.rs:1:1
   |
 1 | / wit_bindgen::generate!({
 2 | |     inline: r#"
 3 | |         package a:b;
...  |
20 | |     "#,
21 | | });
   | |  ^
   | |  |
   | |__first implementation here
   |    conflicting implementation for `t::R`
   |
   = note: this error originates in the macro `wit_bindgen::generate` (in Nightly builds, run with -Z macro-backtrace for more info)

For more information about this error, try `rustc --explain E0119`.
error: could not compile `wat` (bin "wat") due to 1 previous error

Metadata

Metadata

Assignees

No one assigned

    Labels

    asyncRelated to async/streams in the component model.gen-rustRelated to bindings for Rust-compiled-to-WebAssembly

    Type

    No type

    Projects

    Status

    Backlog

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions