From 618ac89d256adca97518742db2ad2759c4f5fc72 Mon Sep 17 00:00:00 2001 From: Murarth Date: Wed, 26 Jul 2017 15:09:32 -0700 Subject: Add method `String::retain` Behaves like `Vec::retain`, accepting a predicate `FnMut(char) -> bool` and reducing the string to only characters for which the predicate returns `true`. --- src/liballoc/tests/lib.rs | 1 + src/liballoc/tests/string.rs | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+) (limited to 'src/liballoc/tests') diff --git a/src/liballoc/tests/lib.rs b/src/liballoc/tests/lib.rs index c6d70ee7575..d4f3a89ee99 100644 --- a/src/liballoc/tests/lib.rs +++ b/src/liballoc/tests/lib.rs @@ -26,6 +26,7 @@ #![feature(splice)] #![feature(str_checked_slicing)] #![feature(str_escape)] +#![feature(string_retain)] #![feature(test)] #![feature(unboxed_closures)] #![feature(unicode)] diff --git a/src/liballoc/tests/string.rs b/src/liballoc/tests/string.rs index b1731b2a5dc..f5c124c6b44 100644 --- a/src/liballoc/tests/string.rs +++ b/src/liballoc/tests/string.rs @@ -332,6 +332,26 @@ fn remove_bad() { "ศ".to_string().remove(1); } +#[test] +fn test_retain() { + let mut s = String::from("α_β_γ"); + + s.retain(|_| true); + assert_eq!(s, "α_β_γ"); + + s.retain(|c| c != '_'); + assert_eq!(s, "αβγ"); + + s.retain(|c| c != 'β'); + assert_eq!(s, "αγ"); + + s.retain(|c| c == 'α'); + assert_eq!(s, "α"); + + s.retain(|_| false); + assert_eq!(s, ""); +} + #[test] fn insert() { let mut s = "foobar".to_string(); -- cgit 1.4.1-3-g733a5