Comments (4)
This regressed in #123594, where the new solver got enabled for the non_local_definitions
lint.
It looks like the core issue here is some kind of exponential runtime in the new solver when there are many bounds on associated types.
Also, this is unrelated to rustdoc
and can be reproduced with just rustc
.
"minimal" repro
pub trait Typed {}
pub struct SpeciesCases<Elim>(Elim);
pub trait SpeciesPackedElim {
type Ogre;
type Cyclops;
type Wendigo;
type Cavetroll;
type Mountaintroll;
type Swamptroll;
type Dullahan;
type Werewolf;
type Occultsaurok;
type Mightysaurok;
type Slysaurok;
type Mindflayer;
type Minotaur;
type Tidalwarrior;
type Yeti;
type Harvester;
type Blueoni;
type Redoni;
type Cultistwarlord;
type Cultistwarlock;
type Huskbrute;
type Tursus;
type Gigasfrost;
type AdletElder;
type SeaBishop;
type HaniwaGeneral;
type TerracottaBesieger;
type TerracottaDemolisher;
type TerracottaPunisher;
type TerracottaPursuer;
type Cursekeeper;
}
impl<'b, Elim: SpeciesPackedElim> Typed for &'b SpeciesCases<Elim>
where
&'b Elim::Ogre: Typed,
&'b Elim::Cyclops: Typed,
&'b Elim::Wendigo: Typed,
&'b Elim::Cavetroll: Typed,
&'b Elim::Mountaintroll: Typed,
&'b Elim::Swamptroll: Typed,
&'b Elim::Dullahan: Typed,
&'b Elim::Werewolf: Typed,
&'b Elim::Occultsaurok: Typed,
&'b Elim::Mightysaurok: Typed,
&'b Elim::Slysaurok: Typed,
&'b Elim::Mindflayer: Typed,
&'b Elim::Minotaur: Typed,
&'b Elim::Tidalwarrior: Typed,
&'b Elim::Yeti: Typed,
&'b Elim::Harvester: Typed,
&'b Elim::Blueoni: Typed,
&'b Elim::Redoni: Typed,
&'b Elim::Cultistwarlord: Typed,
&'b Elim::Cultistwarlock: Typed,
&'b Elim::Huskbrute: Typed,
&'b Elim::Tursus: Typed,
&'b Elim::Gigasfrost: Typed,
&'b Elim::AdletElder: Typed,
&'b Elim::SeaBishop: Typed,
&'b Elim::HaniwaGeneral: Typed,
&'b Elim::TerracottaBesieger: Typed,
&'b Elim::TerracottaDemolisher: Typed,
&'b Elim::TerracottaPunisher: Typed,
&'b Elim::TerracottaPursuer: Typed,
&'b Elim::Cursekeeper: Typed,
{}
fn main() {
pub struct Cases;
impl<'b> Typed for &'b Cases {}
}
from rust.
cc @lcnr could the couple search graph PRs helping on fuchsia also help here?
from rust.
looking into it, thanks @lukas-code for the minimization.
from rust.
WG-prioritization assigning priority (Zulip discussion).
@rustbot label -I-prioritize +P-high
from rust.
Related Issues (20)
- mimatched type when using a `let` binding with the same name as a struct HOT 2
- Tracking Issue for externally implementable items
- error: internal compiler error: ...: opaque types got hidden types registered from within subtype predicate
- `print-type-size` somtimes prints incorrect output HOT 1
- Compiling this code caused the compiler to block
- Segmentation fault installing rust on clean Ubuntu 24.04 amd64 HOT 4
- Poor interaction between NLL-borrowck, async, and c_variadic's `...` desugaring (`VaListImpl<'_>`)
- ICE : called `Option::unwrap()` on a `None` value in compiler/rustc_hir_typeck/src/method/confirm.rs HOT 2
- `&T -> *const T` or `&mut T -> *mut T` should be considered a use of inner fields HOT 2
- Remark `TMP`, `TEMP` and `USERPROFILE` env vars can influence `env::temp_dir` on Windows HOT 1
- Add SIMD operations that use f16 and f128 HOT 5
- Warn for `cfg!(target_* = "whatever")` usage in build scripts HOT 1
- UTF_16BE encode decode result does not match HOT 2
- Error when `fn` keyword is missing could be more explicit HOT 3
- How to enable rust-lld on stable? HOT 3
- Failure to recognize `&String` as equivalent to `&str` HOT 2
- need to show help for `adding an explicit lifetime bound`.
- ICE: `this path really should be doomed`
- Tracking issue for migrating from Glacier to compiletest ICE/crash tracking HOT 3
- `check_type_length_limit` is broken HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from rust.