I\'m trying to get user input and check if the user put in \"y\" or \"n\". Surprisingly, in the below code, neither the if
nor the if else
case exe
Instead of trim_right_matches, I'd recommend using trim_right or even better, just trim:
use std::io;
fn main() {
let mut correct_name = String::new();
io::stdin().read_line(&mut correct_name).expect("Failed to read line");
let correct_name = correct_name.trim();
if correct_name == "y" {
println!("matched y!");
} else if correct_name.trim() == "n" {
println!("matched n!");
}
}
This last case handles lots of types of whitespace:
Returns a string slice with leading and trailing whitespace removed.
'Whitespace' is defined according to the terms of the Unicode Derived Core Property White_Space.
So Windows / Linux / macOS shouldn't matter.
You could also use the trimmed result's length to truncate the original String
, but in this case you should only use trim_right
!
let trimmed_len = correct_name.trim_right().len();
correct_name.truncate(trimmed_len);