jiebi/CodeConvo huggingface dataset:
Change:
I tried this code: searched nightlies: from nightly-2022-08-18 to nightly-2022-09-09 regressed nightly: nightly-2022-08-23 searched commit range: regressed commit: <details<summarybisected with <a href=''cargo-bisect-rustc</av0.6.4</summaryHost triple: x8664-unknown-linux-gnu Reproduce with: </details<!-- Include a backtrace in the code block by setting in your environment. E.g. . --<details<summaryBacktrace</summary<p</p</details<!-- If you know when this regression occurred, please add a line like below, replacing with one of stable, beta, or nightly. modify labels: +regression-from-stable-to-{channel} -regression-untriaged --
Regression introduced in:
This block around is crucial to trigger the ICE.
WG-prioritization assigning priority (). label -I-prioritize +P-medium

Discussion:
Some(t) if t.hir_owner == parent_id => t, _ => self.tcx.typeck(parent_id), }; <del> let ty = typeck_results.expr_ty_adjusted(expr); let span = expr.peel_blocks().span; </del> <ins> let expr = expr.peel_blocks(); let ty = typeck_results.expr_ty_adjusted_opt(expr).unwrap_or(tcx.ty_error()); let span = expr.span; </ins> if Some(span) != err.span.primary_span() { err.span_label( span, <del> &if ty.references_error() { </del> <ins> if ty.references_error() { </ins> String::new() } else { format!("this tail expression is of type `{:?}`", ty)

LL | | LL | |         |x| println!("doubling {}", x); LL | |         Some(x * 2) <del> | |         ----------- </del> <ins> | |         ----------- this tail expression is of type `std::option::Option<_>` </ins> LL | | LL | |     }); | |_____^ expected an `FnOnce<({integer},)>` closure, found `Option<_>`

<ins> pub struct Stuff { inner: *mut (), } pub struct Wrap<T>(T); fn fun<T>(t: T) -> Wrap<T> { todo!() } pub trait Trait<'de> { fn do_stuff(_: Wrap<&'de mut Self>); } impl<'a> Trait<'a> for () { fn do_stuff(_: Wrap<&'a mut Self>) {} } fn fun2(t: &mut Stuff) -> () { let Stuff { inner, .. } = t; Trait::do_stuff({ fun(&mut *inner) }); //~^ ERROR the trait bound `*mut (): Trait<'_>` is not satisfied } fn main() {} </ins>

<ins> error[E0277]: the trait bound `*mut (): Trait<'_>` is not satisfied --> $DIR/issue-101623.rs:21:21 | LL |     Trait::do_stuff({ fun(&mut *inner) }); |     --------------- ^^----------------^^ |     |               | |     |               the trait `Trait<'_>` is not implemented for `*mut ()` |     required by a bound introduced by this call | = help: the trait `Trait<'a>` is implemented for `()` error: aborting due to previous error For more information about this error, try `rustc --explain E0277`. </ins>
Change:
suggests deleting the and directories when using download-rustc, to avoid caching issues like this. still won't do the right thing, but it will at least give a hard error instead of silently using the wrong version. Originally posted by in <!-- TRIAGEBOTSTART --<!-- TRIAGEBOTASSIGNSTART --<!-- TRIAGEBOTASSIGNDATASTARTTRIAGEBOTASSIGNDATAEND --<!-- TRIAGEBOTASSIGNEND --<!-- TRIAGEBOTEND --
Mentoring instructions: in delete the sysroots and folders, not just the current sysroot. Some background info: https://rustc-dev-
claim

Discussion:
/// 1-3. fn run(self, builder: &Builder<'_>) -> Interned<PathBuf> { let compiler = self.compiler; <ins> let host_dir = builder.out.join(&compiler.host.triple); </ins> let sysroot = if compiler.stage == 0 { <del> builder.out.join(&compiler.host.triple).join("stage0-sysroot") </del> <ins> host_dir.join("stage0-sysroot") } else if builder.download_rustc() { host_dir.join("ci-rustc-sysroot") </ins> } else { <del> builder.out.join(&compiler.host.triple).join(format!("stage{}", compiler.stage)) </del> <ins> host_dir.join(format!("stage{}", compiler.stage)) </ins> }; let _ = fs::remove_dir_all(&sysroot); t!(fs::create_dir_all(&sysroot));

builder.config.build, compiler.host, "Cross-compiling is not yet supported with `download-rustc`", ); <ins> // #102002, cleanup stage1 and stage0-sysroot folders when using download-rustc so people don't use old versions of the toolchain by accident. let _ = fs::remove_dir_all(host_dir.join("stage1")); let _ = fs::remove_dir_all(host_dir.join("stage0-sysroot")); </ins> // Copy the compiler into the correct sysroot. let ci_rustc_dir = builder.config.out.join(&*builder.config.build.triple).join("ci-rustc");
Change:
I tried this code: I expected to see this happen: a "no value found" error pointing at the token Instead, this happened: a "no value found" error pointing at the : <!-- TRIAGEBOTSTART --<!-- TRIAGEBOTASSIGNSTART --<!-- TRIAGEBOTASSIGNDATASTARTTRIAGEBOTASSIGNDATAEND --<!-- TRIAGEBOTASSIGNEND --<!-- TRIAGEBOTEND --
This doesn't seem to be an issue on stable, interestingly.
Yep, it works fine on 1.63.0, but has the problem on 1.65.0-beta.1 and the latest nightly.
claim

Discussion:
'{' => { let curr_last_brace = self.last_opening_brace; let byte_pos = self.to_span_index(pos); <del> let lbrace_end = InnerOffset(byte_pos.0 + 1); </del> <ins> let lbrace_end = self.to_span_index(pos + 1); </ins> self.last_opening_brace = Some(byte_pos.to(lbrace_end)); self.cur.next(); if self.consume('{') {

<ins> fn main() { format!("x7Ba}"); //~^ ERROR cannot find value `a` in this scope format!("x7Bax7D"); //~^ ERROR cannot find value `a` in this scope let a = 0; format!("x7Ba} {b}"); //~^ ERROR cannot find value `b` in this scope format!("x7Bax7D {b}"); //~^ ERROR cannot find value `b` in this scope format!("x7Ba} x7Bb}"); //~^ ERROR cannot find value `b` in this scope format!("x7Bax7D x7Bb}"); //~^ ERROR cannot find value `b` in this scope format!("x7Bax7D x7Bbx7D"); //~^ ERROR cannot find value `b` in this scope } </ins>

<ins> error[E0425]: cannot find value `a` in this scope --> $DIR/format-args-capture-issue-102057.rs:2:18 | LL |     format!("x7Ba}"); |                  ^ not found in this scope error[E0425]: cannot find value `a` in this scope --> $DIR/format-args-capture-issue-102057.rs:4:18 | LL |     format!("x7Bax7D"); |                  ^ not found in this scope error[E0425]: cannot find value `b` in this scope --> $DIR/format-args-capture-issue-102057.rs:9:22 | LL |     format!("x7Ba} {b}"); |                      ^ help: a local variable with a similar name exists: `a` error[E0425]: cannot find value `b` in this scope --> $DIR/format-args-capture-issue-102057.rs:11:25 | LL |     format!("x7Bax7D {b}"); |                         ^ help: a local variable with a similar name exists: `a` error[E0425]: cannot find value `b` in this scope --> $DIR/format-args-capture-issue-102057.rs:13:25 | LL |     format!("x7Ba} x7Bb}"); |                         ^ help: a local variable with a similar name exists: `a` error[E0425]: cannot find value `b` in this scope --> $DIR/format-args-capture-issue-102057.rs:15:28 | LL |     format!("x7Bax7D x7Bb}"); |                            ^ help: a local variable with a similar name exists: `a` error[E0425]: cannot find value `b` in this scope --> $DIR/format-args-capture-issue-102057.rs:17:28 | LL |     format!("x7Bax7D x7Bbx7D"); |                            ^ help: a local variable with a similar name exists: `a` error: aborting due to 7 previous errors For more information about this error, try `rustc --explain E0425`. </ins>
Change:
Based on 's blog posts, I was playing around with RPITIT and dyn Trait. I fully understand that it shouldn't compile :sweat_smile:. It should probably give the same error as you get when is replaced with . Which would be: . Playground: <strongDetails:</strongI started with this code ("shadowing foo" and dot-notation): Which errors with , but recommends the ICE-ing code: . ICE's both on nightly and beta. <details<summary<strongBacktrace 1</strong</summary<p</p</details<details<summary<strongBacktrace 2</strong</summary<p</p</details
the that triggers. Maybe including is enough to fix it?
No, that will just mask the underlying issue.
label +F-returnpositionimpltraitin_trait

Discussion:
impl<'tcx> ProjectionTy<'tcx> { pub fn trait_def_id(&self, tcx: TyCtxt<'tcx>) -> DefId { <del> let parent = tcx.parent(self.item_def_id); assert_eq!(tcx.def_kind(parent), DefKind::Trait); parent </del> <ins> match tcx.def_kind(self.item_def_id) { DefKind::AssocTy | DefKind::AssocConst => tcx.parent(self.item_def_id), DefKind::ImplTraitPlaceholder => { tcx.parent(tcx.impl_trait_in_trait_parent(self.item_def_id)) } kind => bug!("unexpected DefKind in ProjectionTy: {kind:?}"), } </ins> } /// Extracts the underlying trait reference and own substs from this projection.

<ins> #![feature(return_position_impl_trait_in_trait)] #![allow(incomplete_features)] trait Marker {} impl Marker for u32 {} trait MyTrait { fn foo(&self) -> impl Marker where Self: Sized; } struct Outer; impl MyTrait for Outer { fn foo(&self) -> impl Marker { 42 } } impl dyn MyTrait { fn other(&self) -> impl Marker { MyTrait::foo(&self) //~^ ERROR the trait bound `&dyn MyTrait: MyTrait` is not satisfied //~| ERROR the trait bound `&dyn MyTrait: MyTrait` is not satisfied //~| ERROR the trait bound `&dyn MyTrait: MyTrait` is not satisfied } } fn main() {} </ins>

<ins> error[E0277]: the trait bound `&dyn MyTrait: MyTrait` is not satisfied --> $DIR/issue-102140.rs:23:22 | LL |         MyTrait::foo(&self) |         ------------ -^^^^ |         |            | |         |            the trait `MyTrait` is not implemented for `&dyn MyTrait` |         |            help: consider removing the leading `&`-reference |         required by a bound introduced by this call error[E0277]: the trait bound `&dyn MyTrait: MyTrait` is not satisfied --> $DIR/issue-102140.rs:23:9 | LL |         MyTrait::foo(&self) |         ^^^^^^^^^^^^^^^^^^^ the trait `MyTrait` is not implemented for `&dyn MyTrait` | = help: the trait `MyTrait` is implemented for `Outer` error[E0277]: the trait bound `&dyn MyTrait: MyTrait` is not satisfied --> $DIR/issue-102140.rs:23:9 | LL |         MyTrait::foo(&self) |         ^^^^^^^^^^^^ the trait `MyTrait` is not implemented for `&dyn MyTrait` | = help: the trait `MyTrait` is implemented for `Outer` error: aborting due to 3 previous errors For more information about this error, try `rustc --explain E0277`. </ins>
Change:
<!-- Thank you for finding an Internal Compiler Error! If possible, try to provide a minimal verifiable example. You can read "Rust Bug Minimization Patterns" for how to create smaller examples. --code from <!-- If you're using the stable version of the compiler, you should also check if the bug also exists in the beta or nightly versions. --: <!-- Include a backtrace in the code block by setting in your environment. E.g. . --<details<summary<strongBacktrace</strong</summary<p</p</details<!-- TRIAGEBOTSTART --<!-- TRIAGEBOTASSIGNSTART --<!-- TRIAGEBOTASSIGNDATASTARTTRIAGEBOTASSIGNDATAEND --<!-- TRIAGEBOTASSIGNEND --<!-- TRIAGEBOTEND --
couple of files from the repo that reproduce this: ./src/test/ui/rfc-2632-const-trait-impl/staged-
This regressed in cc
Thanks for the bisection. This should be a simple fix: Replace with And add a test as well :) label E-easy
claim
Are you still working on this? If not, I would like to fix this as soon as possible.
Sorry for the delay, no problem. Thanks.

Discussion:
of_trait: Some(trait_ref), .. }) = item.kind <ins> && let Some(def_id) = trait_ref.trait_def_id() </ins> { <del> let def_id = trait_ref.trait_def_id().unwrap(); </del> let source_map = tcx.sess.source_map(); if !tcx.has_attr(def_id, sym::const_trait) { tcx.sess

<ins> #![feature(allocator_api)] #![feature(const_trait_impl)] use core::convert::{From, TryFrom}; //~^ ERROR //~| ERROR use std::pin::Pin; use std::alloc::Allocator; impl<T: ?Sized, A: Allocator> const From<Box<T, A>> for Pin<Box<T, A>> where A: 'static, {} pub fn main() {} </ins>

<ins> error[E0433]: failed to resolve: maybe a missing crate `core`? --> $DIR/issue-102156.rs:4:5 | LL | use core::convert::{From, TryFrom}; |     ^^^^ maybe a missing crate `core`? | = help: consider adding `extern crate core` to use the `core` crate error[E0433]: failed to resolve: maybe a missing crate `core`? --> $DIR/issue-102156.rs:4:5 | LL | use core::convert::{From, TryFrom}; |     ^^^^ maybe a missing crate `core`? | = help: consider adding `extern crate core` to use the `core` crate error: aborting due to 2 previous errors For more information about this error, try `rustc --explain E0433`. </ins>
Change:
Enabling on rustc (nightly-2022-08-14) doesn't generate staticlibraries or cdylib anymore. This happens after the LLVM 14 to LLVM 15 change as bisected below where LLVM-15 sets the flag only for the module being compiled. Even with this build fails as there is a module without a name that doesn't have set. Earlier in BTI works even without requiring the The way I'm reproducing this (patch attached to make this easier) is by: in : This issue persists even in the latest build <details<summary<strongBacktrace</strong</summary<p</p</details are folders generated in the and folders searched nightlies: from nightly-2022-08-12 to nightly-2022-08-14 regressed nightly: nightly-2022-08-13 searched commit range: regressed commit: <details<summarybisected with <a href=''cargo-bisect-rustc</av0.6.4</summaryHost triple: x86_64-unknown-linux-gnu Reproduce with: </details
Error: Label P-high can only be set by Rust team members Please file an issue on GitHub at if there's a problem with this bot, or reach out on on Zulip.
Looks like commit is the start of this bug. Bug not reproduced by running: Other commits reverted for conflict reasons. On the project branch Commit base:
This bug only happens for release mode builds with the same which leads me to believe this unnamed module is release mode specific or this occurs due to some llvm-ir merging/optimization that doesn't happen for debug builds.

Discussion:
} if let Some(BranchProtection { bti, pac_ret }) = sess.opts.unstable_opts.branch_protection { <ins> let behavior = if llvm_version >= (15, 0, 0) { llvm::LLVMModFlagBehavior::Min } else { llvm::LLVMModFlagBehavior::Error }; </ins> if sess.target.arch == "aarch64" { llvm::LLVMRustAddModuleFlag( llmod, <del> llvm::LLVMModFlagBehavior::Error, </del> <ins> behavior, </ins> "branch-target-enforcement0".as_ptr().cast(), bti.into(), ); llvm::LLVMRustAddModuleFlag( llmod, <del> llvm::LLVMModFlagBehavior::Error, </del> <ins> behavior, </ins> "sign-return-address0".as_ptr().cast(), pac_ret.is_some().into(), ); let pac_opts = pac_ret.unwrap_or(PacRet { leaf: false, key: PAuthKey::A }); llvm::LLVMRustAddModuleFlag( llmod, <del> llvm::LLVMModFlagBehavior::Error, </del> <ins> behavior, </ins> "sign-return-address-all0".as_ptr().cast(), pac_opts.leaf.into(), ); llvm::LLVMRustAddModuleFlag( llmod, <del> llvm::LLVMModFlagBehavior::Error, </del> <ins> behavior, </ins> "sign-return-address-with-bkey0".as_ptr().cast(), u32::from(pac_opts.key == PAuthKey::B), );

Append = 5, AppendUnique = 6, Max = 7, <ins> Min = 8, </ins> } // Consts for the LLVM CallConv type, pre-cast to usize.
Change:
When writing the current error is "expected one of these tokens", without any attempt to recover the parse. It should instead be closer to: <!-- TRIAGEBOTSTART --<!-- TRIAGEBOTASSIGNSTART --<!-- TRIAGEBOTASSIGNDATASTARTTRIAGEBOTASSIGNDATAEND --<!-- TRIAGEBOTASSIGNEND --<!-- TRIAGEBOTEND --
What do you expect the suggestion from this code? here is a valid identifier, "expected one of these tokens" comes when the second identifier comes.
I think this case should remain as is. in particular is a shame because it is a valid type for the parser, but not a valid trait, and newcomers might not yet have a mental model for the distinction. I would say, when parsing a trait, if it can't be parsed, then try to parse a type in a snapshot (like we do in other parts of the parser), and if successful, emit a targeted error (trait expected but found type).
claim

Discussion:
use super::{ForceCollect, Parser, TrailingToken}; use rustc_ast::token; <del> use rustc_ast::{self as ast, AttrVec, GenericBounds, GenericParam, GenericParamKind, WhereClause}; </del> <ins> use rustc_ast::{ self as ast, AttrVec, GenericBounds, GenericParam, GenericParamKind, TyKind, WhereClause, }; </ins> use rustc_errors::{Applicability, PResult}; use rustc_span::symbol::kw;

let mut colon_span = None; let bounds = if self.eat(&token::Colon) { colon_span = Some(self.prev_token.span); <ins> // recover from `impl Trait` in type param bound if self.token.is_keyword(kw::Impl) { let impl_span = self.token.span; let snapshot = self.create_snapshot_for_diagnostic(); match self.parse_ty() { Ok(p) => { if let TyKind::ImplTrait(_, bounds) = &(*p).kind { let span = impl_span.to(self.token.span.shrink_to_lo()); let mut err = self.struct_span_err( span, "expected trait bound, found `impl Trait` type", ); err.span_label(span, "not a trait"); if let [bound, ..] = &bounds[..] { err.span_suggestion_verbose( impl_span.until(bound.span()), "use the trait bounds directly", String::new(), Applicability::MachineApplicable, ); } err.emit(); return Err(err); } } Err(err) => { err.cancel(); } } self.restore_snapshot(snapshot); } </ins> self.parse_generic_bounds(colon_span)? } else { Vec::new() }; let default = if self.eat(&token::Eq) { Some(self.parse_ty()?) } else { None }; Ok(GenericParam { ident, id: ast::DUMMY_NODE_ID,

<ins> fn foo<T: impl Trait>() {} //~^ ERROR expected trait bound, found `impl Trait` type fn main() {} </ins>

<ins> error: expected trait bound, found `impl Trait` type --> $DIR/issue-102182-impl-trait-recover.rs:1:11 | LL | fn foo<T: impl Trait>() {} |           ^^^^^^^^^^ not a trait | help: use the trait bounds directly | LL - fn foo<T: impl Trait>() {} LL + fn foo<T: Trait>() {} | error: aborting due to previous error </ins>
Change:
sure the is installed. Optionally install  for convenience. . Use commit specifically. any rust nightly after (I am using / for the error below). the following command: With a working compiler (I used / for this example), I expect compilation to succeed: Instead, I get a link error about a missing symbol, and cannot link any code that doesn't optimize it out (so everything with and sometimes higher s?): The target doesn't support unwinding (and I don't imagine it ever will), only aborting panics. So I'm not sure why is being linked in in the first place (or how compilation should be fixed). searched nightlies: from nightly-2022-08-07 to nightly-2022-09-21 regressed nightly: nightly-2022-09-08 searched commits: from to regressed commit: <details<summarybisected with <a href=''cargo-bisect-rustc</av0.6.0</summaryHost triple: x86_64-unknown-linux-gnu Reproduce with: </details
WG-prioritization assigning priority (). thanks for the bisection. It leads to cc: label -I-prioritize +P-medium
~This issue should be fixed by Could you test it once that PR lands into nightly?~ This is a different issue.
This should be fixed by
I rebuilt Rust w/ and then tested against the code I linked in the initial post, and linking in debug mode succeeded; will indeed fix the issue.

Discussion:
"riscv32" => Architecture::Riscv32, "riscv64" => Architecture::Riscv64, "sparc64" => Architecture::Sparc64, <ins> "avr" => Architecture::Avr, "msp430" => Architecture::Msp430, "hexagon" => Architecture::Hexagon, "bpf" => Architecture::Bpf, </ins> // Unsupported architecture. _ => return None, };
Change:
It would be nice if turned on all warnings, like how other compilers work.
At least with and , doesn't turn on all the warnings. I don't think turning all on the warnings is ever going to be useful because lots are going to be very domain specific (ones like already are). clang has a fairly useless to turn on all warnings, and to turn on all those included by , and also many more that are considered to be useful. Rust already has all the warnings viewed as useful and not too subjective on by default.
Oh, wow! Thanks for the detailed, thoughtful response. I'll definitely look into each of those options.
(FWIW the warnings are listed in and are almost all on by default)
I think there should be a catch-all lint group, that objectively enables all lints. Whenever programmers decide subjectively to allow lints in some instances, they may then do that on a case-by-case basis. And if an implemented lint simply does not make sense at all then it should be improved/removed. The existing lint group apparently does not include all built-in lint groups, contrary to the output of (): can this issue be reopened?
Reopening. However, I think we shouldn't have any sort of "enable all lints" option; rustc's lints are already all intended to have no or very few false positives (and as such are enabled by default where that makes sense). Could you talk about which specific lints are missing from the default warnings built-in list? I'm not personally aware of any. I'm also somewhat concerned that a or similar option would be confusing to some extent because "all" wouldn't include clippy lints (and probably can't, or at least not easily -- though I don't know the details here).
Issue triage: no longer prints , so that was fixed at some point. (it now prints ) I think it might be useful to have a message explaining why doesn't exist, point the user toward to see all available errors, and suggest adding a for a more thorough lint check. This would help beginners coming from other languages to 1) understand that most useful warnings are turned on by default, 2) tell the user that exists, and 3) show the user that warnings can be controlled from inside the source code, rather than the command line. If there's interest in doing this, I could make a PR.

Discussion:
verbose_help); } <ins> fn print_wall_help() { println!(" The flag `-Wall` does not exist in `rustc`. Most useful lints are enabled by default. Use `rustc -W help` to see all available lints. It's more common to put warning settings in the crate root using `#![warn(LINT_NAME)]` instead of using the command line flag directly. "); } </ins> fn describe_lints(sess: &Session, lint_store: &lint::LintStore, loaded_plugins: bool) { println!(" Available lint options:

return None; } <ins> // Handle the special case of -Wall. let wall = matches.opt_strs("W"); if wall.iter().any(|x| *x == "all") { print_wall_help(); return None; } </ins> // Don't handle -W help here, because we might first load plugins. let r = matches.opt_strs("Z"); if r.iter().any(|x| *x == "help") {
Change:
label regression-from-stable-to-nightly regression in , cc <!-- TRIAGEBOTSTART --<!-- TRIAGEBOTASSIGNSTART --<!-- TRIAGEBOTASSIGNDATASTARTTRIAGEBOTASSIGNDATAEND --<!-- TRIAGEBOTASSIGNEND --<!-- TRIAGEBOTEND --
claim
label A-diagnostics
WG-prioritization assigning priority (). label -I-prioritize +P-medium

Discussion:
let mut region_index = self.region_index; let mut next_name = |this: &Self| { <del> let name = name_by_region_index(region_index, &mut available_names, num_available); debug!(?name); region_index += 1; assert!(!this.used_region_names.contains(&name)); </del> <ins> let mut name; loop { name = name_by_region_index(region_index, &mut available_names, num_available); region_index += 1; if !this.used_region_names.contains(&name) { break; } } </ins> name };

<ins> use std::cell::Cell; #[rustfmt::skip] fn f( f: for<'a, 'b, 'c, 'd, 'e, 'f, 'g, 'h, 'i, 'j, 'k, 'l, 'm, 'n, 'o, 'p, 'q, 'r, 's, 't, 'u, 'v, 'w, 'x, 'y, 'z, 'z0> fn(Cell<(&   i32, &'a i32, &'b i32, &'c i32, &'d i32, &'e i32, &'f i32, &'g i32, &'h i32, &'i i32, &'j i32, &'k i32, &'l i32, &'m i32, &'n i32, &'o i32, &'p i32, &'q i32, &'r i32, &'s i32, &'t i32, &'u i32, &'v i32, &'w i32, &'x i32, &'y i32, &'z i32, &'z0 i32)>), ) -> i32 { f //~^ ERROR mismatched types } fn main() {} </ins>

<ins> error[E0308]: mismatched types --> $DIR/issue-102374.rs:16:5 | LL | ) -> i32 { |      --- expected `i32` because of return type LL |     f |     ^ expected `i32`, found fn pointer | = note:    expected type `i32` found fn pointer `for<'z1, 'a, 'b, 'c, 'd, 'e, 'f, 'g, 'h, 'i, 'j, 'k, 'l, 'm, 'n, 'o, 'p, 'q, 'r, 's, 't, 'u, 'v, 'w, 'x, 'y, 'z, 'z0> fn(Cell<(&'z1 i32, &'a i32, &'b i32, &'c i32, &'d i32, &'e i32, &'f i32, &'g i32, &'h i32, &'i i32, &'j i32, &'k i32, &'l i32, &'m i32, &'n i32, &'o i32, &'p i32, &'q i32, &'r i32, &'s i32, &'t i32, &'u i32, &'v i32, &'w i32, &'x i32, &'y i32, &'z i32, &'z0 i32)>)` error: aborting due to previous error For more information about this error, try `rustc --explain E0308`. </ins>