In Chapter 2, Working with Collections; Using a Vector, we learned about Vec::retain, which filters a vector in place. On the nightly toolchain, this functionality has arrived in String and works the same way, as if a String was a Vec<char>—which, if you think about it, it really is.
The functionality of filtering a String was always there, but it required going over the string as an Iterator and creating a new String with the filtered characters; or worse yet, converting a String to a newly-created Vec<char>, using retain on it, and then converting the chars back into another newly-created String.