CodeSandwich / Mocktopus

Mocking framework for Rust
MIT License
233 stars 20 forks source link

Compilation failure with latest nightly #71

Closed Gerschtli closed 1 year ago

Gerschtli commented 2 years ago

There seems to be a regression with latest nightly.

$> cargo test
[...]
   Compiling mocktopus v0.7.11
error[E0059]: type parameter to bare `FnOnce` trait must be a tuple
   --> /home/tobhap/.cargo/registry/src/github.com-1ecc6299db9ec823/mocktopus-0.7.11/src/mocking.rs:100:25
    |
100 | impl<T, O, F: FnOnce<T, Output = O>> Mockable<T, O> for F {
    |                         ^^^^^^^^^^ the trait `Tuple` is not implemented for `T`
    |
note: required by a bound in `FnOnce`
help: consider restricting type parameter `T`
    |
100 | impl<T: std::marker::Tuple, O, F: FnOnce<T, Output = O>> Mockable<T, O> for F {
    |       ++++++++++++++++++++

error[E0059]: type parameter to bare `FnMut` trait must be a tuple
   --> /home/tobhap/.cargo/registry/src/github.com-1ecc6299db9ec823/mocktopus-0.7.11/src/mocking.rs:192:12
    |
192 |         M: FnMut<I, Output = MockResult<I, O>> + 'a,
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `Tuple` is not implemented for `I`
    |
note: required by a bound in `FnMut`
help: consider further restricting type parameter `I`
    |
192 |         M: FnMut<I, Output = MockResult<I, O>> + 'a, I: std::marker::Tuple
    |                                                    ~~~~~~~~~~~~~~~~~~~~~~~

error[E0059]: type parameter to bare `FnMut` trait must be a tuple
   --> /home/tobhap/.cargo/registry/src/github.com-1ecc6299db9ec823/mocktopus-0.7.11/src/mocking.rs:204:12
    |
204 |         M: FnMut<I, Output = MockResult<I, O>>,
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `Tuple` is not implemented for `I`
    |
note: required by a bound in `FnMut`
help: consider further restricting type parameter `I`
    |
204 |         M: FnMut<I, Output = MockResult<I, O>>, I: std::marker::Tuple
    |                                               ~~~~~~~~~~~~~~~~~~~~~~~

error[E0059]: type parameter to bare `FnMut` trait must be a tuple
  --> /home/tobhap/.cargo/registry/src/github.com-1ecc6299db9ec823/mocktopus-0.7.11/src/mocking.rs:45:27
   |
45 |     unsafe fn mock_raw<M: FnMut<T, Output = MockResult<T, O>>>(&self, mock: M);
   |                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `Tuple` is not implemented for `T`
   |
note: required by a bound in `FnMut`
help: consider restricting type parameter `T`
   |
11 | pub trait Mockable<T: std::marker::Tuple, O> {
   |                     ++++++++++++++++++++

error[E0059]: type parameter to bare `FnMut` trait must be a tuple
  --> /home/tobhap/.cargo/registry/src/github.com-1ecc6299db9ec823/mocktopus-0.7.11/src/mocking.rs:65:21
   |
65 |     fn mock_safe<M: FnMut<T, Output = MockResult<T, O>> + 'static>(&self, mock: M);
   |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `Tuple` is not implemented for `T`
   |
note: required by a bound in `FnMut`
help: consider restricting type parameter `T`
   |
11 | pub trait Mockable<T: std::marker::Tuple, O> {
   |                     ++++++++++++++++++++

For more information about this error, try `rustc --explain E0059`.
error: could not compile `mocktopus` due to 5 previous errors
warning: build failed, waiting for other jobs to finish...

$> rustc --version
rustc 1.67.0-nightly (7eef946fc 2022-11-06)