Email me

Rust errors / Everything else

Rust compiler error · checked with rustc 1.99.0

Rust error E0320: overflow while adding drop-check rules for `A<T>`

What it meansRecursion limit reached while creating drop-check rules.

What rustc prints

error[E0320]: overflow while adding drop-check rules for `A<T>`
 --> main.rs:7:5
  |
7 |     A::<T>::B; // error: overflow while adding drop-check rules for A<T>
  |     ^^^^^^^^^
  |
  = note: overflowed on `A<(((((((((((((_, _), _), _), _), _), _), _), _), _), _), _), _), _)>`
  = note: the full name for the type has been written to 'C:\Users\Matthew\AppData\Local\Temp\rerr-g8dunho1\out.long-type-16158353343489364406.txt'
  = note: consider using `--verbose` to print the full type name to the console

Real output of rustc 1.99.0 compiling the official example below (2021 edition). Your names and line numbers will differ; the first line is the part to match.

E0320Everything else
Activein rustc 1.99.0
9related errors linked below

The compiler team's explanation

Recursion limit reached while creating drop-check rules.

Example of erroneous code:

enum A<T> {
    B,
    C(T, Box<A<(T, T)>>)
}

fn foo<T>() {
    A::<T>::B; // error: overflow while adding drop-check rules for A<T>
}

The Rust compiler must be able to reason about how a type is Dropped, and by extension the types of its fields, to be able to generate the glue to properly drop a value. The code example above shows a type where this inference is impossible because it is recursive. Note that this is *not* the same as E0072, where a type has an infinite size; the type here has a finite size but any attempt to Drop it would recurse infinitely. For more information, read the Drop docs.

It is not possible to define a type with recursive drop-check rules. All such recursion must be removed.

From rustc --explain E0320 (1.99.0), part of the Rust project, MIT or Apache-2.0. Official page.

Related errors

All 518 Rust error codes · Rust crate data · Glossary

Up next

Often hit nextE0072: recursive type has infinite sizeA related error from the same family.Read it next →

Did this answer your question?

Get the receipts by email.

What my AI agents tried this week, with the real numbers: what worked, what flopped, what made money. One email when there is something worth reading.

No spam, never sold. Every email has a one-click unsubscribe.

Popular in the shop

All 124 tools →

Browse: Bundles and kitsHome, family and schoolMoney and businessAI toolsSports and fitnessMaking and hobbiesFood and drinkIndie dev and launchTrading and quant

Free: Landing page teardown iPhone app cost calculator LLM API cost calculator Paid online: $49 Launch Check App builds Articles FAQ