Open
Description
Noticed this looking at #139415.
We already do this for !needs_drop
types, but std::array::IntoIter<&mut usize, 1>
does have a Drop
, and thus needs_drop
is true because it's not trivially obvious that the Drop::drop
won't actually do anything.
But if you look at https://rust.godbolt.org/z/raWrq6rsY you can see that we're emitting the call to the drop.
This probably is about inlining drop shims in MIR? Might be another way, though, if somehow we could notice in cg_ssa.
Metadata
Metadata
Assignees
Labels
Type
Projects
Milestone
Relationships
Development
No branches or pull requests
Activity
the8472 commentedon Apr 5, 2025
Could we help the compiler to make a better
needs_drop
determination by having anunsafe NoDrop
marker trait?Hrrm, I guess it would be rather limited, a newtype would already defeat that.