Цикл loop не получается выйти

Возникла проблема с выходом из цикла loop
//===============
use std::io;

fn main()
{
loop
{
println!("Enter something ");

    let mut guess = String::new();
    io::stdin().read_line(&mut guess)
        .expect("<<<");

    println!("{}",guess);

    if guess == "q"
    {
        break;
    }
}

}

хинт:
Поменяй println!("{}",guess); на println!("[{}]",guess);
и сразу поймёшь в чём ошибка :wink:

Поменял - вот что получил
q
[q
]

Ну и? Не понял?
Это элементарно же, Ватсон.
У тебя read_line возвращает строку в конце которой стоит \n(он же LF, он же line feed). Соответственно ‘q’ != q\n и из цикла не выходим.

Да это я понял - в С++ такая же история. Не понял КАК ВЫЙТИ.

Получилось. Не ругайся - я не волшебник в rust - я только учусь. И про trim() вообще нигде не встречал.

1 лайк

https://doc.rust-lang.org/std/string/struct.String.html
Вообще копаться в доках бывает полезно.

Копаюсь - у меня их вагон и маленькая тележка. Но иногда вот на такие вопросы просто не знаешь в каком месте искать. Кстати, с подобной проблемой столкнулся только на С++ и в Rust. Ах да еще в Perl есть функция “chomp()” для обрезки конца строки.

1 лайк