8d27232141
This patch primarily does two things: (1) it prevents lifetimes from leaking out of unboxed closures; (2) it allows unboxed closure type notation, call notation, and construction notation to construct closures matching any of the three traits. This breaks code that looked like: let mut f; { let x = &5i; f = |&mut:| *x + 10; } Change this code to avoid having a reference escape. For example: { let x = &5i; let mut f; // <-- move here to avoid dangling reference f = |&mut:| *x + 10; } I believe this is enough to consider unboxed closures essentially implemented. Further issues (for example, higher-rank lifetimes) should be filed as followups. Closes #14449. [breaking-change] |
||
---|---|---|
.. | ||
common.rs | ||
creader.rs | ||
csearch.rs | ||
cstore.rs | ||
decoder.rs | ||
encoder.rs | ||
filesearch.rs | ||
loader.rs | ||
mod.rs | ||
tydecode.rs | ||
tyencode.rs |