From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ivan Petkov Subject: bug#36614: rust@1.36's hash is incorrect. Date: Fri, 12 Jul 2019 09:33:50 -0700 Message-ID: References: <8736jby4go.fsf@gmx.com> <87pnmf2y1n.fsf@nckx> Mime-Version: 1.0 (Mac OS X Mail 11.5 \(3445.9.1\)) Content-Type: multipart/mixed; boundary="Apple-Mail=_8A428289-B228-405A-9236-33B5320F53AD" Return-path: Received: from eggs.gnu.org ([2001:470:142:3::10]:50896) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hlyVj-0005Ur-QW for bug-guix@gnu.org; Fri, 12 Jul 2019 12:35:04 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hlyVi-0004DT-MN for bug-guix@gnu.org; Fri, 12 Jul 2019 12:35:03 -0400 Received: from debbugs.gnu.org ([209.51.188.43]:60018) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hlyVi-0004DK-Cf for bug-guix@gnu.org; Fri, 12 Jul 2019 12:35:02 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1hlyVi-0006pQ-6l for bug-guix@gnu.org; Fri, 12 Jul 2019 12:35:02 -0400 Sender: "Debbugs-submit" Resent-Message-ID: In-Reply-To: <87pnmf2y1n.fsf@nckx> List-Id: Bug reports for GNU Guix List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-guix-bounces+gcggb-bug-guix=m.gmane.org@gnu.org Sender: "bug-Guix" To: Tobias Geerinckx-Rice Cc: 36614-done@debbugs.gnu.org --Apple-Mail=_8A428289-B228-405A-9236-33B5320F53AD Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 > On Jul 12, 2019, at 6:16 AM, Tobias Geerinckx-Rice = wrote: >=20 > Since release archives are signed that would imply some horrible = things about their key management, so I doubt it very much. I guess = we'll find out. >=20 > I've gone ahead and pushed a fix since the signature checked out. I'm = closing this bug for now... >=20 > However, I'd be interested to know what the previous hash described. = Do you still have that file around, Ivan? My apologies, this was all partly my fault. I do have the old source = lying around, diffing the two (attached) reveals that the changelog and one = source file actually changed. A bit more detailed context: The rust project makes pre-release sources available for testing ahead = of the formal release, and the process is meant to shake out any potential = bugs. I tested with the prerelease build originally, and after the real = release came out I updated the package URL to the formal release and immediately rebuilt successfully. I'm not 100% sure if maybe guix reused the cached tarball I had from = earlier, or whether the prerelease source was immediately upgraded to the formal = release and fixed shortly after. (I did try rebuilding right before pushing the = change out which succeeded with no changes, which I'm guessing is because guix = did not redownload the tarball and why I didn't notice the hash mismatch). =E2=80=94Ivan --Apple-Mail=_8A428289-B228-405A-9236-33B5320F53AD Content-Disposition: attachment; filename=rust-src.diff Content-Type: application/octet-stream; x-unix-mode=0644; name="rust-src.diff" Content-Transfer-Encoding: quoted-printable ---=20rustc-1.36.0-src-old/=0A+++=20rustc-1.36.0-src/=0A=E2=94=9C=E2=94=80= =E2=94=80=20RELEASES.md=0A=E2=94=82=20@@=20-1,7=20+1,111=20@@=0A=E2=94=82=20= +Version=201.36.0=20(2019-07-04)=0A=E2=94=82=20= +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=0A=E2=94=82=20+=0A=E2=94=82=20+Language=0A=E2=94=82=20+--------=0A= =E2=94=82=20+-=20[Non-Lexical=20Lifetimes=20are=20now=20enabled=20on=20= the=202015=20edition.][59114]=0A=E2=94=82=20+-=20[The=20order=20of=20= traits=20in=20trait=20objects=20no=20longer=20affects=20the=20semantics=20= of=20that=0A=E2=94=82=20+=20=20object.][59445]=20e.g.=20`dyn=20Send=20+=20= fmt::Debug`=20is=20now=20equivalent=20to=0A=E2=94=82=20+=20=20`dyn=20= fmt::Debug=20+=20Send`,=20where=20this=20was=20previously=20not=20the=20= case.=0A=E2=94=82=20+=0A=E2=94=82=20+Libraries=0A=E2=94=82=20+---------=0A= =E2=94=82=20+-=20[`HashMap`'s=20implementation=20has=20been=20replaced=20= with=20`hashbrown::HashMap`=20implementation.][58623]=0A=E2=94=82=20+-=20= [`TryFromSliceError`=20now=20implements=20`From`.][60318]=0A= =E2=94=82=20+-=20[`mem::needs_drop`=20is=20now=20available=20as=20a=20= const=20fn.][60364]=0A=E2=94=82=20+-=20= [`alloc::Layout::from_size_align_unchecked`=20is=20now=20available=20as=20= a=20const=20fn.][60370]=0A=E2=94=82=20+-=20[`String`=20now=20implements=20= `BorrowMut`.][60404]=0A=E2=94=82=20+-=20[`io::Cursor`=20now=20= implements=20`Default`.][60234]=0A=E2=94=82=20+-=20[Both=20= `NonNull::{dangling,=20cast}`=20are=20now=20const=20fns.][60244]=0A=E2=94=82= =20+-=20[The=20`alloc`=20crate=20is=20now=20stable.][59675]=20`alloc`=20= allows=20you=20to=20use=20a=20subset=0A=E2=94=82=20+=20=20of=20`std`=20= (e.g.=20`Vec`,=20`Box`,=20`Arc`)=20in=20`#![no_std]`=20environments=20if=20= the=0A=E2=94=82=20+=20=20environment=20has=20access=20to=20heap=20memory=20= allocation.=0A=E2=94=82=20+-=20[`String`=20now=20implements=20= `From<&String>`.][59825]=0A=E2=94=82=20+-=20[You=20can=20now=20pass=20= multiple=20arguments=20to=20the=20`dbg!`=20macro.][59826]=20`dbg!`=20= will=0A=E2=94=82=20+=20=20return=20a=20tuple=20of=20each=20argument=20= when=20there=20is=20multiple=20arguments.=0A=E2=94=82=20+-=20= [`Result::{is_err,=20is_ok}`=20are=20now=20`#[must_use]`=20and=20will=20= produce=20a=20warning=20if=0A=E2=94=82=20+=20=20not=20used.][59648]=0A= =E2=94=82=20+=0A=E2=94=82=20+Stabilized=20APIs=0A=E2=94=82=20= +---------------=0A=E2=94=82=20+-=20[`VecDeque::rotate_left`]=0A=E2=94=82=20= +-=20[`VecDeque::rotate_right`]=0A=E2=94=82=20+-=20[`Iterator::copied`]=0A= =E2=94=82=20+-=20[`io::IoSlice`]=0A=E2=94=82=20+-=20[`io::IoSliceMut`]=0A= =E2=94=82=20+-=20[`Read::read_vectored`]=0A=E2=94=82=20+-=20= [`Write::write_vectored`]=0A=E2=94=82=20+-=20[`str::as_mut_ptr`]=0A=E2=94=82= =20+-=20[`mem::MaybeUninit`]=0A=E2=94=82=20+-=20= [`pointer::align_offset`]=0A=E2=94=82=20+-=20[`future::Future`]=0A=E2=94=82= =20+-=20[`task::Context`]=0A=E2=94=82=20+-=20[`task::RawWaker`]=0A=E2=94=82= =20+-=20[`task::RawWakerVTable`]=0A=E2=94=82=20+-=20[`task::Waker`]=0A= =E2=94=82=20+-=20[`task::Poll`]=0A=E2=94=82=20+=0A=E2=94=82=20+Cargo=0A= =E2=94=82=20+-----=0A=E2=94=82=20+-=20[Cargo=20will=20now=20produce=20an=20= error=20if=20you=20attempt=20to=20use=20the=20name=20of=20a=20required=20= dependency=20as=20a=20feature.][cargo/6860]=0A=E2=94=82=20+-=20[You=20= can=20now=20pass=20the=20`--offline`=20flag=20to=20run=20cargo=20without=20= accessing=20the=20network.][cargo/6934]=0A=E2=94=82=20+=0A=E2=94=82=20= +You=20can=20find=20further=20change's=20in=20[Cargo's=201.36.0=20= release=20notes][cargo-1-36-0].=0A=E2=94=82=20+=0A=E2=94=82=20+Clippy=0A= =E2=94=82=20+------=0A=E2=94=82=20+There=20have=20been=20numerous=20= additions=20and=20fixes=20to=20clippy,=20see=20[Clippy's=201.36.0=20= release=20notes][clippy-1-36-0]=20for=20more=20details.=0A=E2=94=82=20+=0A= =E2=94=82=20+Misc=0A=E2=94=82=20+----=0A=E2=94=82=20+=0A=E2=94=82=20= +Compatibility=20Notes=0A=E2=94=82=20+-------------------=0A=E2=94=82=20= +-=20[`std::arch::x86::_rdtsc`=20returns=20`u64`=20instead=20of=20= `i64`][stdsimd/559]=0A=E2=94=82=20+-=20= [`std::arch::x86_64::_mm_shuffle_ps`=20takes=20an=20`i32`=20instead=20of=20= `u32`=20for=20`mask`][stdsimd/522]=0A=E2=94=82=20+-=20With=20the=20= stabilisation=20of=20`mem::MaybeUninit`,=20`mem::uninitialized`=20use=20= is=20no=0A=E2=94=82=20+=20=20longer=20recommended,=20and=20will=20be=20= deprecated=20in=201.38.0.=0A=E2=94=82=20+=0A=E2=94=82=20+[60318]:=20= https://github.com/rust-lang/rust/pull/60318/=0A=E2=94=82=20+[60364]:=20= https://github.com/rust-lang/rust/pull/60364/=0A=E2=94=82=20+[60370]:=20= https://github.com/rust-lang/rust/pull/60370/=0A=E2=94=82=20+[60404]:=20= https://github.com/rust-lang/rust/pull/60404/=0A=E2=94=82=20+[60234]:=20= https://github.com/rust-lang/rust/pull/60234/=0A=E2=94=82=20+[60244]:=20= https://github.com/rust-lang/rust/pull/60244/=0A=E2=94=82=20+[58623]:=20= https://github.com/rust-lang/rust/pull/58623/=0A=E2=94=82=20+[59648]:=20= https://github.com/rust-lang/rust/pull/59648/=0A=E2=94=82=20+[59675]:=20= https://github.com/rust-lang/rust/pull/59675/=0A=E2=94=82=20+[59825]:=20= https://github.com/rust-lang/rust/pull/59825/=0A=E2=94=82=20+[59826]:=20= https://github.com/rust-lang/rust/pull/59826/=0A=E2=94=82=20+[59445]:=20= https://github.com/rust-lang/rust/pull/59445/=0A=E2=94=82=20+[59114]:=20= https://github.com/rust-lang/rust/pull/59114/=0A=E2=94=82=20= +[cargo/6860]:=20https://github.com/rust-lang/cargo/pull/6860/=0A=E2=94=82= =20+[cargo/6934]:=20https://github.com/rust-lang/cargo/pull/6934/=0A=E2=94= =82=20+[`VecDeque::rotate_left`]:=20= https://doc.rust-lang.org/std/collections/struct.VecDeque.html#method.rota= te_left=0A=E2=94=82=20+[`VecDeque::rotate_right`]:=20= https://doc.rust-lang.org/std/collections/struct.VecDeque.html#method.rota= te_right=0A=E2=94=82=20+[`Iterator::copied`]:=20= https://doc.rust-lang.org/std/iter/trait.Iterator.html#tymethod.copied=0A= =E2=94=82=20+[`io::IoSlice`]:=20= https://doc.rust-lang.org/std/io/struct.IoSlice.html=0A=E2=94=82=20= +[`io::IoSliceMut`]:=20= https://doc.rust-lang.org/std/io/struct.IoSliceMut.html=0A=E2=94=82=20= +[`Read::read_vectored`]:=20= https://doc.rust-lang.org/std/io/trait.Read.html#method.read_vectored=0A= =E2=94=82=20+[`Write::write_vectored`]:=20= https://doc.rust-lang.org/std/io/trait.Write.html#method.write_vectored=0A= =E2=94=82=20+[`str::as_mut_ptr`]:=20= https://doc.rust-lang.org/std/primitive.str.html#method.as_mut_ptr=0A=E2=94= =82=20+[`mem::MaybeUninit`]:=20= https://doc.rust-lang.org/std/mem/union.MaybeUninit.html=0A=E2=94=82=20= +[`pointer::align_offset`]:=20= https://doc.rust-lang.org/std/primitive.pointer.html#method.align_offset=0A= =E2=94=82=20+[`future::Future`]:=20= https://doc.rust-lang.org/std/future/trait.Future.html=0A=E2=94=82=20= +[`task::Context`]:=20= https://doc.rust-lang.org/beta/std/task/struct.Context.html=0A=E2=94=82=20= +[`task::RawWaker`]:=20= https://doc.rust-lang.org/beta/std/task/struct.RawWaker.html=0A=E2=94=82=20= +[`task::RawWakerVTable`]:=20= https://doc.rust-lang.org/beta/std/task/struct.RawWakerVTable.html=0A=E2=94= =82=20+[`task::Waker`]:=20= https://doc.rust-lang.org/beta/std/task/struct.Waker.html=0A=E2=94=82=20= +[`task::Poll`]:=20= https://doc.rust-lang.org/beta/std/task/enum.Poll.html=0A=E2=94=82=20= +[clippy-1-36-0]:=20= https://github.com/rust-lang/rust-clippy/blob/master/CHANGELOG.md#rust-136= =0A=E2=94=82=20+[cargo-1-36-0]:=20= https://github.com/rust-lang/cargo/blob/master/CHANGELOG.md#cargo-136-2019= -07-04=0A=E2=94=82=20+[stdsimd/522]:=20= https://github.com/rust-lang-nursery/stdsimd/issues/522=0A=E2=94=82=20= +[stdsimd/559]:=20= https://github.com/rust-lang-nursery/stdsimd/issues/559=0A=E2=94=82=20+=0A= =E2=94=82=20=20Version=201.35.0=20(2019-05-23)=0A=E2=94=82=20=20= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=0A=E2=94=82=20=20=0A=E2=94=82=20=20Language=0A=E2=94=82=20=20= --------=0A=E2=94=82=20=20-=20[`FnOnce`,=20`FnMut`,=20and=20the=20`Fn`=20= traits=20are=20now=20implemented=20for=20`Box`,=0A=E2=94=82=20=20= =20=20`Box`,=20and=20`Box`=20respectively.][59500]=0A=E2=94=82=20= @@=20-58,15=20+162,15=20@@=0A=E2=94=82=20=20-=20[`Option::copied`]=0A=E2=94= =82=20=20=0A=E2=94=82=20=20Cargo=0A=E2=94=82=20=20-----=0A=E2=94=82=20=20= -=20[You=20can=20now=20set=20`cargo:rustc-cdylib-link-arg`=20at=20build=20= time=20to=20pass=20custom=0A=E2=94=82=20=20=20=20linker=20arguments=20= when=20building=20a=20`cdylib`.][cargo/6298]=20Its=20usage=20is=20highly=0A= =E2=94=82=20=20=20=20platform=20specific.=0A=E2=94=82=20-=20=20=0A=E2=94=82= =20+=0A=E2=94=82=20=20Misc=0A=E2=94=82=20=20----=0A=E2=94=82=20=20-=20= [The=20Rust=20toolchain=20is=20now=20available=20natively=20for=20musl=20= based=20distros.][58575]=0A=E2=94=82=20=20=0A=E2=94=82=20=20[59460]:=20= https://github.com/rust-lang/rust/pull/59460/=0A=E2=94=82=20=20[59464]:=20= https://github.com/rust-lang/rust/pull/59464/=0A=E2=94=82=20=20[59500]:=20= https://github.com/rust-lang/rust/pull/59500/=0A=E2=94=9C=E2=94=80=E2=94=80= =20git-commit-hash=0A=E2=94=82=20@@=20-1=20+1=20@@=0A=E2=94=82=20= -9d98f8f319eaa1a40f76fb15b52ee2a179e5286a=0A=E2=94=82=20= +a53f9df32fbb0b5f4382caaad8f1a46f36ea887c=0A=E2=94=9C=E2=94=80=E2=94=80=20= src=0A=E2=94=82=20=E2=94=9C=E2=94=80=E2=94=80=20libstd=0A=E2=94=82=20=E2=94= =82=20=E2=94=9C=E2=94=80=E2=94=80=20collections=0A=E2=94=82=20=E2=94=82=20= =E2=94=82=20=E2=94=9C=E2=94=80=E2=94=80=20hash=0A=E2=94=82=20=E2=94=82=20= =E2=94=82=20=E2=94=82=20=E2=94=9C=E2=94=80=E2=94=80=20map.rs=0A=E2=94=82=20= =E2=94=82=20=E2=94=82=20=E2=94=82=20=E2=94=82=20@@=20-2604,14=20+2604,20=20= @@=0A=E2=94=82=20=E2=94=82=20=E2=94=82=20=E2=94=82=20=E2=94=82=20=20=20=20= =20=20use=20super::HashMap;=0A=E2=94=82=20=E2=94=82=20=E2=94=82=20=E2=94=82= =20=E2=94=82=20=20=20=20=20=20use=20super::RandomState;=0A=E2=94=82=20= =E2=94=82=20=E2=94=82=20=E2=94=82=20=E2=94=82=20=20=20=20=20=20use=20= crate::cell::RefCell;=0A=E2=94=82=20=E2=94=82=20=E2=94=82=20=E2=94=82=20= =E2=94=82=20=20=20=20=20=20use=20rand::{thread_rng,=20Rng};=0A=E2=94=82=20= =E2=94=82=20=E2=94=82=20=E2=94=82=20=E2=94=82=20=20=20=20=20=20use=20= realstd::collections::CollectionAllocErr::*;=0A=E2=94=82=20=E2=94=82=20= =E2=94=82=20=E2=94=82=20=E2=94=82=20=20=20=20=20=20use=20realstd::usize;=0A= =E2=94=82=20=E2=94=82=20=E2=94=82=20=E2=94=82=20=E2=94=82=20=20=0A=E2=94=82= =20=E2=94=82=20=E2=94=82=20=E2=94=82=20=E2=94=82=20+=20=20=20=20//=20= https://github.com/rust-lang/rust/issues/62301=0A=E2=94=82=20=E2=94=82=20= =E2=94=82=20=E2=94=82=20=E2=94=82=20+=20=20=20=20fn=20= _assert_hashmap_is_unwind_safe()=20{=0A=E2=94=82=20=E2=94=82=20=E2=94=82=20= =E2=94=82=20=E2=94=82=20+=20=20=20=20=20=20=20=20fn=20= assert_unwind_safe()=20{}=0A=E2=94=82=20= =E2=94=82=20=E2=94=82=20=E2=94=82=20=E2=94=82=20+=20=20=20=20=20=20=20=20= assert_unwind_safe::>>();=0A= =E2=94=82=20=E2=94=82=20=E2=94=82=20=E2=94=82=20=E2=94=82=20+=20=20=20=20= }=0A=E2=94=82=20=E2=94=82=20=E2=94=82=20=E2=94=82=20=E2=94=82=20+=0A=E2=94= =82=20=E2=94=82=20=E2=94=82=20=E2=94=82=20=E2=94=82=20=20=20=20=20=20= #[test]=0A=E2=94=82=20=E2=94=82=20=E2=94=82=20=E2=94=82=20=E2=94=82=20=20= =20=20=20=20fn=20test_zero_capacities()=20{=0A=E2=94=82=20=E2=94=82=20= =E2=94=82=20=E2=94=82=20=E2=94=82=20=20=20=20=20=20=20=20=20=20type=20HM=20= =3D=20HashMap;=0A=E2=94=82=20=E2=94=82=20=E2=94=82=20=E2=94=82= =20=E2=94=82=20=20=0A=E2=94=82=20=E2=94=82=20=E2=94=82=20=E2=94=82=20=E2=94= =82=20=20=20=20=20=20=20=20=20=20let=20m=20=3D=20HM::new();=0A=E2=94=82=20= =E2=94=82=20=E2=94=82=20=E2=94=82=20=E2=94=82=20=20=20=20=20=20=20=20=20=20= assert_eq!(m.capacity(),=200);=0A=E2=94=82=20=E2=94=82=20=E2=94=9C=E2=94=80= =E2=94=80=20panic.rs=0A=E2=94=82=20=E2=94=82=20=E2=94=82=20@@=20-1,13=20= +1,14=20@@=0A=E2=94=82=20=E2=94=82=20=E2=94=82=20=20//!=20Panic=20= support=20in=20the=20standard=20library.=0A=E2=94=82=20=E2=94=82=20=E2=94=82= =20=20=0A=E2=94=82=20=E2=94=82=20=E2=94=82=20=20#![stable(feature=20=3D=20= "std_panic",=20since=20=3D=20"1.9.0")]=0A=E2=94=82=20=E2=94=82=20=E2=94=82= =20=20=0A=E2=94=82=20=E2=94=82=20=E2=94=82=20=20use=20crate::any::Any;=0A= =E2=94=82=20=E2=94=82=20=E2=94=82=20=20use=20crate::cell::UnsafeCell;=0A= =E2=94=82=20=E2=94=82=20=E2=94=82=20+use=20crate::collections;=0A=E2=94=82= =20=E2=94=82=20=E2=94=82=20=20use=20crate::fmt;=0A=E2=94=82=20=E2=94=82=20= =E2=94=82=20=20use=20crate::future::Future;=0A=E2=94=82=20=E2=94=82=20= =E2=94=82=20=20use=20crate::pin::Pin;=0A=E2=94=82=20=E2=94=82=20=E2=94=82=20= =20use=20crate::ops::{Deref,=20DerefMut};=0A=E2=94=82=20=E2=94=82=20=E2=94= =82=20=20use=20crate::panicking;=0A=E2=94=82=20=E2=94=82=20=E2=94=82=20=20= use=20crate::ptr::{Unique,=20NonNull};=0A=E2=94=82=20=E2=94=82=20=E2=94=82= =20=20use=20crate::rc::Rc;=0A=E2=94=82=20=E2=94=82=20=E2=94=82=20@@=20= -281,14=20+282,19=20@@=0A=E2=94=82=20=E2=94=82=20=E2=94=82=20=20= #[stable(feature=20=3D=20"unwind_safe_atomic_refs",=20since=20=3D=20= "1.14.0")]=0A=E2=94=82=20=E2=94=82=20=E2=94=82=20=20impl=20RefUnwindSafe=20= for=20atomic::AtomicBool=20{}=0A=E2=94=82=20=E2=94=82=20=E2=94=82=20=20=0A= =E2=94=82=20=E2=94=82=20=E2=94=82=20=20#[cfg(target_has_atomic=20=3D=20= "ptr")]=0A=E2=94=82=20=E2=94=82=20=E2=94=82=20=20#[stable(feature=20=3D=20= "unwind_safe_atomic_refs",=20since=20=3D=20"1.14.0")]=0A=E2=94=82=20=E2=94= =82=20=E2=94=82=20=20impl=20RefUnwindSafe=20for=20= atomic::AtomicPtr=20{}=0A=E2=94=82=20=E2=94=82=20=E2=94=82=20=20=0A= =E2=94=82=20=E2=94=82=20=E2=94=82=20+//=20= https://github.com/rust-lang/rust/issues/62301=0A=E2=94=82=20=E2=94=82=20= =E2=94=82=20+#[stable(feature=20=3D=20"hashbrown",=20since=20=3D=20= "1.36.0")]=0A=E2=94=82=20=E2=94=82=20=E2=94=82=20+impl=20= UnwindSafe=20for=20collections::HashMap=0A=E2=94=82=20=E2=94=82= =20=E2=94=82=20+=20=20=20=20where=20K:=20UnwindSafe,=20V:=20UnwindSafe,=20= S:=20UnwindSafe=20{}=0A=E2=94=82=20=E2=94=82=20=E2=94=82=20+=0A=E2=94=82=20= =E2=94=82=20=E2=94=82=20=20#[stable(feature=20=3D=20"catch_unwind",=20= since=20=3D=20"1.9.0")]=0A=E2=94=82=20=E2=94=82=20=E2=94=82=20=20impl=20= Deref=20for=20AssertUnwindSafe=20{=0A=E2=94=82=20=E2=94=82=20=E2=94=82=20= =20=20=20=20=20type=20Target=20=3D=20T;=0A=E2=94=82=20=E2=94=82=20=E2=94=82= =20=20=0A=E2=94=82=20=E2=94=82=20=E2=94=82=20=20=20=20=20=20fn=20= deref(&self)=20->=20&T=20{=0A=E2=94=82=20=E2=94=82=20=E2=94=82=20=20=20=20= =20=20=20=20=20=20&self.0=0A=E2=94=82=20=E2=94=82=20=E2=94=82=20=20=20=20= =20=20}=0A=E2=94=9C=E2=94=80=E2=94=80=20version=0A=E2=94=82=20@@=20-1=20= +1=20@@=0A=E2=94=82=20-1.36.0=20(9d98f8f31=202019-06-29)=0A=E2=94=82=20= +1.36.0=20(a53f9df32=202019-07-03)=0A= --Apple-Mail=_8A428289-B228-405A-9236-33B5320F53AD--