From 37df5e0b917a9c66f586a40e899fca8727efaac5 Mon Sep 17 00:00:00 2001 From: Ariel Ben-Yehuda Date: Tue, 5 Dec 2017 14:09:16 +0200 Subject: [PATCH] adjust libcore --- src/libcore/cell.rs | 6 ++++-- src/libcore/iter/mod.rs | 18 ++++++++++++------ 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/src/libcore/cell.rs b/src/libcore/cell.rs index d4cd3f6264e..4a66506fec7 100644 --- a/src/libcore/cell.rs +++ b/src/libcore/cell.rs @@ -1084,9 +1084,11 @@ impl<'b, T: ?Sized> RefMut<'b, T> { pub fn map(orig: RefMut<'b, T>, f: F) -> RefMut<'b, U> where F: FnOnce(&mut T) -> &mut U { + // FIXME: fix borrow-check + let RefMut { value, borrow } = orig; RefMut { - value: f(orig.value), - borrow: orig.borrow, + value: f(value), + borrow: borrow, } } } diff --git a/src/libcore/iter/mod.rs b/src/libcore/iter/mod.rs index e173f43b5e6..1f7651b75cc 100644 --- a/src/libcore/iter/mod.rs +++ b/src/libcore/iter/mod.rs @@ -1776,12 +1776,18 @@ fn count(mut self) -> usize { #[inline] fn nth(&mut self, n: usize) -> Option { - match self.peeked.take() { - // the .take() below is just to avoid "move into pattern guard" - Some(ref mut v) if n == 0 => v.take(), - Some(None) => None, - Some(Some(_)) => self.iter.nth(n - 1), - None => self.iter.nth(n), + // FIXME: merge these when borrow-checking gets better. + if n == 0 { + match self.peeked.take() { + Some(v) => v, + None => self.iter.nth(n), + } + } else { + match self.peeked.take() { + Some(None) => None, + Some(Some(_)) => self.iter.nth(n - 1), + None => self.iter.nth(n), + } } } -- GitLab