Skip to content
This repository has been archived by the owner on May 23, 2024. It is now read-only.

ices/105488.rs: fixed with errors #1725

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

github-actions[bot]
Copy link
Contributor

@github-actions github-actions bot commented Apr 4, 2024

Issue: rust-lang/rust#105488

pub trait MyFnOnce {
    type Output;

    fn call_my_fn_once(self) -> Self::Output;
}

pub struct WrapFnOnce<F>(F);

impl<F: FnOnce() -> D, D: MyFnOnce> MyFnOnce for WrapFnOnce<F> {
    type Output = D::Output;

    fn call_my_fn_once(self) -> Self::Output {
        D::call_my_fn_once(self.0())
    }
}

impl<F: FnOnce() -> D, D: MyFnOnce> MyFnOnce for F {
    type Output = D::Output;

    fn call_my_fn_once(self) -> Self::Output {
        D::call_my_fn_once(self())
    }
}

pub fn my_fn_1() -> impl MyFnOnce {
    my_fn_2
}

pub fn my_fn_2() -> impl MyFnOnce {
    WrapFnOnce(my_fn_1)
}

fn main() {
    let v = my_fn_1();

    let _ = v.call_my_fn_once();
}
=== stdout ===
=== stderr ===
error[E0275]: overflow evaluating the requirement `fn() -> impl MyFnOnce {my_fn_2}: MyFnOnce`
  |
  = help: consider increasing the recursion limit by adding a `#![recursion_limit = "256"]` attribute to your crate (`105488`)
note: required for `WrapFnOnce<fn() -> impl MyFnOnce {my_fn_1}>` to implement `MyFnOnce`
 --> /home/runner/work/glacier/glacier/ices/105488.rs:9:37
  |
9 | impl<F: FnOnce() -> D, D: MyFnOnce> MyFnOnce for WrapFnOnce<F> {
  |                           --------  ^^^^^^^^     ^^^^^^^^^^^^^
  |                           |
  |                           unsatisfied trait bound introduced here
  = note: 126 redundant requirements hidden
  = note: required for `WrapFnOnce<fn() -> impl MyFnOnce {my_fn_1}>` to implement `MyFnOnce`

error: aborting due to 1 previous error

For more information about this error, try `rustc --explain E0275`.
==============

=== stdout ===
=== stderr ===
error[E0275]: overflow evaluating the requirement `fn() -> impl MyFnOnce {my_fn_2}: MyFnOnce`
  |
  = help: consider increasing the recursion limit by adding a `#![recursion_limit = "256"]` attribute to your crate (`105488`)
note: required for `WrapFnOnce<fn() -> impl MyFnOnce {my_fn_1}>` to implement `MyFnOnce`
 --> /home/runner/work/glacier/glacier/ices/105488.rs:9:37
  |
9 | impl<F: FnOnce() -> D, D: MyFnOnce> MyFnOnce for WrapFnOnce<F> {
  |                           --------  ^^^^^^^^     ^^^^^^^^^^^^^
  |                           |
  |                           unsatisfied trait bound introduced here
  = note: 126 redundant requirements hidden
  = note: required for `WrapFnOnce<fn() -> impl MyFnOnce {my_fn_1}>` to implement `MyFnOnce`

error: aborting due to 1 previous error

For more information about this error, try `rustc --explain E0275`.
==============
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant