From: Ian Jackson Date: Mon, 5 Oct 2020 12:13:06 +0000 (+0100) Subject: use zip_eq X-Git-Tag: otter-0.2.0~744 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=2f9f4df82109cc238893001b7e6915863b35fe39;p=otter.git use zip_eq Signed-off-by: Ian Jackson --- diff --git a/src/bigfloat.rs b/src/bigfloat.rs index 9f484e02..6ae6080c 100644 --- a/src/bigfloat.rs +++ b/src/bigfloat.rs @@ -86,7 +86,7 @@ mod innards { impl Bigfloat { pub(in super) - fn from_limbs(sign: Sign, exp: Sz, nlimbs: Sz, mut limbs: I) + fn from_limbs(sign: Sign, exp: Sz, nlimbs: Sz, limbs: I) -> Bigfloat where L: Into + Debug, I: Iterator @@ -95,15 +95,8 @@ mod innards { let p = alloc::alloc(layout(nlimbs)); let (p_header, p_limbs) = ptrs(p); ptr::write(p_header, Header { sign, exp, nlimbs }); - let mut count = 0..(nlimbs as usize); - loop { - match (limbs.next(), count.next()) { - (None, None) => break, - (Some(l), Some(i)) => { - p_limbs.add(i).write(l.into()); - }, - x => panic!("unexpected {:?}", x), - } + for (l, i) in limbs.zip_eq(0..(nlimbs as usize)) { + p_limbs.add(i).write(l.into()); } Bigfloat(NonNull::new(p).unwrap()) }