diff options
| author | bors <bors@rust-lang.org> | 2017-08-15 16:21:28 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2017-08-15 16:21:28 +0000 |
| commit | 82be83cf744611a016fb09ae1afbffc04b3ed2e1 (patch) | |
| tree | e7054196a3c1077869c05473d3ef605fb7a47b6a /src/liballoc/tests | |
| parent | 1b08e0f231cd30719c25a5992f1d9bb27ea02b61 (diff) | |
| parent | 618ac89d256adca97518742db2ad2759c4f5fc72 (diff) | |
| download | rust-82be83cf744611a016fb09ae1afbffc04b3ed2e1.tar.gz rust-82be83cf744611a016fb09ae1afbffc04b3ed2e1.zip | |
Auto merge of #43500 - murarth:string-retain, r=alexcrichton
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`.
Diffstat (limited to 'src/liballoc/tests')
| -rw-r--r-- | src/liballoc/tests/lib.rs | 1 | ||||
| -rw-r--r-- | src/liballoc/tests/string.rs | 20 |
2 files changed, 21 insertions, 0 deletions
diff --git a/src/liballoc/tests/lib.rs b/src/liballoc/tests/lib.rs index 27b23d14059..34b0a137b10 100644 --- a/src/liballoc/tests/lib.rs +++ b/src/liballoc/tests/lib.rs @@ -25,6 +25,7 @@ #![feature(slice_rotate)] #![feature(splice)] #![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 @@ -333,6 +333,26 @@ fn remove_bad() { } #[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(); s.insert(0, 'ệ'); |
