What changed
Breaking Changes
- Fix a soundness hole in
Report::frames_mut: the returned iterator handed out&mut Frames with independent lifetimes, so a frame and one of its sources (viaFrame::sources_mut) could be borrowed mutably at the same time — undefined behavior triggerable from safe code, up to segfaults.frames_mutnow takes a visitor closure (FnMut(&mut Frame) -> ControlFlow<()>) instead of returning an iterator, and theFramesMuttype has been removed.Report::downcast_mutis unaffected. (#8946)