error[E0271]: expected `impl Iterator<Item = ((&str,), ())>` to be an iterator that yields `(({integer},), _)`, but it yields `((&str,), ())`
 --> tests/compile-fail/datalog_join_badtypes.rs:8:30
  |
8 |         out(a) :- in1(a, b), in2(b)
  |         ---------------------^^^^^^
  |         |                    |
  |         |                    expected `(({integer},), _)`, found `((&str,), ())`
  |         required by a bound introduced by this call
  |
  = note: expected tuple `(({integer},), _)`
             found tuple `((&str,), ())`
note: required by a bound in `check_inputs`
 --> tests/compile-fail/datalog_join_badtypes.rs:8:9
  |
8 |         out(a) :- in1(a, b), in2(b)
  |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `check_inputs`

error[E0271]: expected `impl Iterator<Item = ((&str,), ())>` to be an iterator that yields `(({integer},), _)`, but it yields `((&str,), ())`
 --> tests/compile-fail/datalog_join_badtypes.rs:8:9
  |
8 |         out(a) :- in1(a, b), in2(b)
  |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `(({integer},), _)`, found `((&str,), ())`
  |
  = note: expected tuple `(({integer},), _)`
             found tuple `((&str,), ())`
note: required by a bound in `check_inputs`
 --> tests/compile-fail/datalog_join_badtypes.rs:8:9
  |
8 |         out(a) :- in1(a, b), in2(b)
  |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `check_inputs`

error[E0271]: expected `impl Iterator<Item = ((&str,), ())>` to be an iterator that yields `(({integer},), ())`, but it yields `((&str,), ())`
 --> tests/compile-fail/datalog_join_badtypes.rs:4:18
  |
4 |       let mut df = datalog!(r#"
  |  __________________^
5 | |         .input in1 `source_iter(0..10) -> map(|x| (x, x))`
6 | |         .input in2 `source_iter(0..10) -> map(|_| ("string",))`
7 | |         .output out `null::<(u32,)>()`
8 | |         out(a) :- in1(a, b), in2(b)
9 | |     "#);
  | |_______^ expected `(({integer},), ())`, found `((&str,), ())`
  |
  = note: expected tuple `(({integer},), ())`
             found tuple `((&str,), ())`
note: required by a bound in `check_inputs`
 --> tests/compile-fail/datalog_join_badtypes.rs:8:9
  |
8 |         out(a) :- in1(a, b), in2(b)
  |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `check_inputs`
  = note: this error originates in the macro `datalog` (in Nightly builds, run with -Z macro-backtrace for more info)

error[E0271]: expected `impl Iterator<Item = ((&str,), ())>` to be an iterator that yields `(({integer},), ())`, but it yields `((&str,), ())`
 --> tests/compile-fail/datalog_join_badtypes.rs:7:17
  |
7 |         .output out `null::<(u32,)>()`
  |                 ^^^ expected `(({integer},), ())`, found `((&str,), ())`
  |
  = note: expected tuple `(({integer},), ())`
             found tuple `((&str,), ())`
note: required by a bound in `check_inputs`
 --> tests/compile-fail/datalog_join_badtypes.rs:8:9
  |
8 |         out(a) :- in1(a, b), in2(b)
  |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `check_inputs`

error[E0271]: expected `impl Iterator<Item = ((&str,), ())>` to be an iterator that yields `(({integer},), ())`, but it yields `((&str,), ())`
 --> tests/compile-fail/datalog_join_badtypes.rs:7:17
  |
7 |         .output out `null::<(u32,)>()`
  |                 ^^^^^^^^^^^^^^^^^^^^^ expected `(({integer},), ())`, found `((&str,), ())`
  |
  = note: expected tuple `(({integer},), ())`
             found tuple `((&str,), ())`
note: required by a bound in `check_inputs`
 --> tests/compile-fail/datalog_join_badtypes.rs:8:9
  |
8 |         out(a) :- in1(a, b), in2(b)
  |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `check_inputs`