我决定做一个应用程序,它将找到任何给定数字列表的中位数. 我想 Select 退出该进程,但当我测试它时,该进程仍在继续.

每当我输入"q"时,它应该会停止,但它并没有.

use std::io;

fn main() {
    let mut v1: Vec<i32> = Vec::new();

    loop {
        println!("Enter: ");

        let mut inp: String = String::new();

        io::stdin().read_line(&mut inp).expect("Failure");
        
        let upd_inp: i32 = match inp.trim().parse() {
            Ok(num) => num,
            Err(_) => if inp == String::from("q") {
                break
            } else {
                continue
            }
        };
        
        v1.push(upd_inp);

        println!("{:?}", v1);
    }
}

推荐答案

str::trim不会修改字符串.它返回字符串的一部分(基本上是一个子字符串).因此,即使您在前面的行上做了inp.trim(),在if语句中被比较的inp在末尾仍然有一个换行符.只需将比较更改为

inp.trim() == String::from("q")

并且q的输入将被如期检测到.

Rust相关问答推荐

基于对vec值的引用从该值中删除该值

在Rust中显式装箱受生存期限制的转换闭包

在跨平台应用程序中使用std::OS::Linux和std::OS::Windows

当T不执行Copy时,如何返回Arc Mutex T后面的值?

什么时候使用FuturesOrdered?

是否可以在不直接重复的情况下为许多特定类型实现一个函数?

详尽的匹配模式绑定

unwrap 选项类型出现错误:无法移出共享引用后面的*foo

为什么我的trait 对象类型不匹配?

为什么Rust编译器会忽略模板参数应具有静态生命周期?

一旦令牌作为文字使用,声明宏不匹配硬编码值?

按下 Ctrl + C 时优雅地停止命令并退出进程

我什么时候应该使用特征作为 Rust 的类型?

在 Rust 中,我如何处理请求 javascript 的页面?

Rust 引用元组和引用元组

将一片字节复制到一个大小不匹配的数组中

为什么 Rust 编译器在移动不可变值时执行复制?

如何异步记忆选项中的 struct 字段

当特征函数依赖于为 Self 实现的通用标记特征时实现通用包装器

C++ 中的 CRTP 是一种表达其他语言中特征和/或 ADT 的方法吗?