From 9a3841b906b73061ac3dc45a356dd4f349efccb9 Mon Sep 17 00:00:00 2001 From: Michael Neumann Date: Fri, 21 Feb 2014 02:16:08 +0100 Subject: [PATCH 1/3] Add std::str::Chars remaining() function --- src/libstd/str.rs | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/libstd/str.rs b/src/libstd/str.rs index c3f79ff7139a6..4bda0dccd3c5b 100644 --- a/src/libstd/str.rs +++ b/src/libstd/str.rs @@ -275,6 +275,27 @@ pub struct Chars<'a> { priv string: &'a str, } +impl<'a> Chars<'a> { + /** + * Returns the remaining string not yet iterated over. + * + * # Example + * + * Print the string `s` without the leading spaces + * (i.e. `"a string"`). + * + * ```rust + * let s = " a string"; + * let iter = s.chars(); + * for ch in iter { + * if ch != ' ' { break } + * } + * println!("{:s}", iter.remaining()); + * ``` + */ + fn remaining(&self) -> 'a &str { self.string } +} + impl<'a> Iterator for Chars<'a> { #[inline] fn next(&mut self) -> Option { From aaabf92963207a78b158083de5d2952a1e6ad13b Mon Sep 17 00:00:00 2001 From: Michael Neumann Date: Fri, 21 Feb 2014 02:20:22 +0100 Subject: [PATCH 2/3] Fix stupid typo --- src/libstd/str.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libstd/str.rs b/src/libstd/str.rs index 4bda0dccd3c5b..a880f04d9fe2c 100644 --- a/src/libstd/str.rs +++ b/src/libstd/str.rs @@ -293,7 +293,7 @@ impl<'a> Chars<'a> { * println!("{:s}", iter.remaining()); * ``` */ - fn remaining(&self) -> 'a &str { self.string } + fn remaining(&self) -> &'a str { self.string } } impl<'a> Iterator for Chars<'a> { From 39b0a51324574e76243b696bf4b23f2f434d8546 Mon Sep 17 00:00:00 2001 From: Michael Neumann Date: Fri, 21 Feb 2014 02:43:40 +0100 Subject: [PATCH 3/3] Make remaining() public. --- src/libstd/str.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libstd/str.rs b/src/libstd/str.rs index a880f04d9fe2c..cd0fc3e30d422 100644 --- a/src/libstd/str.rs +++ b/src/libstd/str.rs @@ -293,7 +293,7 @@ impl<'a> Chars<'a> { * println!("{:s}", iter.remaining()); * ``` */ - fn remaining(&self) -> &'a str { self.string } + pub fn remaining(&self) -> &'a str { self.string } } impl<'a> Iterator for Chars<'a> {