Rust 无法正确读取整数输入

2024-02-11

我正在尝试使用一个简单的程序来测试我的 Rust 技能,该程序从单行输入中读取多个整数。它编译正确,但不幸的是当它收到输入时1 2 3,它会出现恐慌,说输入不是有效的整数。有人可以解释一下原因,并解释一下如何修复我的程序吗?

use std::io;

fn main() {
    let mut string = String::new();
    io::stdin().read_line(&mut string);

    let int_vec: Vec<u32> = string.split(" ")
        .map(|x| x.parse::<u32>().expect("Not an integer!"))
        .collect();

     for i in (0..int_vec.len()).rev() {
         print!("{} ", int_vec[i]);
     }
}

除了 Dogberts 的答案之外......了解您将来如何使用迭代器自己调试此类问题可能会有所帮助。

The Iterator特质暴露了inspect您可以使用它来检查每个项目的功能。将您的代码转换为使用inspect每张地图之前和之后都会产生:

let int_vec: Vec<u32> = string.split(" ")
.inspect(|x| println!("About to parse: {:?}", x))
.map(|x| {
    x.parse::<u32>()
        .expect("Not an integer!")
})
.inspect(|x| println!("Parsed {:?} successfully!", x))
.collect();

Outputs:

1 2 3
About to parse: "1"
Parsed 1 successfully!
About to parse: "2"
Parsed 2 successfully!
About to parse: "3\n"

thread '<main>' panicked at 'Not an integer!...

注意当它到​​达数字 3 时它试图解析什么。

当然,你可以检查一下string一切都靠它自己。inspect当涉及迭代器时,它很方便。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Rust 无法正确读取整数输入 的相关文章

随机推荐

  • 使用 RxJava 实现存储库模式

    我正在尝试找出一种更好的方法来实现 Android 中 RxJava 中的存储库模式之类的功能 这是我到目前为止所拥有的 从here https gist github com pieces029 5e92f9003fa1a4ebc59b
  • 如何去除两个顶点之间的边?

    我想删除两个顶点之间的边 所以我在 javatinkerpop3 中的代码如下 private void removeEdgeOfTwoVertices Vertex fromV Vertex toV String edgeLabel Gr
  • 使用 IDisposable 资源进行屈服

    是否有通过可支配资源产生收益的正确方法 返回的对象是 IDisposable 但它迭代的元素是 这是一个例子 public static IEnumerable
  • JPA - 禁用 persistence.xml 的验证

    我正在迈出使用 JPA Hibernate 的第一步 总体思路是连接到遗留数据库来执行复杂的查询 我认为 hibernate 是完成这项任务的绝佳伴侣 但是 首先 我创建了一个 bean persistence xml 和 hibernat
  • 更改文本文件编码

    如何通过代码更改文本文件编码 我正在使用此代码实际创建文件本身 但如何更改编码 更改为 UTF 8 w o BOM string path E Test Example txt if File Exists path File Create
  • Visual Studio XML 文件编辑器小写

    我正在 Visual Studio 中编辑 cshtml 带有 cshtml 文件扩展名 我自动设置格式或粘贴一些 xml 这会触发自动格式 并且 Visual Studio 会小写所有 xml 属性 因此 theAttribute gt
  • Windows 终端中的 Git Bash 在单独的窗口中打开

    我想将 git bash 添加到 Windows 终端 但是 当我在终端中添加新的 git bash 选项卡时 git bash 将在另一个窗口中打开 这是我的配置 guid acrylicOpacity 0 75 closeOnExit
  • "Hello" |> printfn 在 F# 中生成错误

    https tryfsharp fsbolero io https tryfsharp fsbolero io printfn Hello 但是 使用管道运算符可以按预期工作 没有错误 Hello gt printfn 类型 string
  • Xcode 8 AppStore 上传(错误 434)

    当我尝试验证App Store构建使用Xcode 8我收到以下错误 ITunesSoftwareServiceAuthenticationErrorDomain 434 这是什么意思 我多次尝试收到相同的错误 我做了一些更改 对配置文件等
  • 使用Java读取MySQL二进制(16) UUID

    这应该是一个非常简单的问题 我只是在这里遗漏了一些基本的东西 我正在经历 那些日子之一 无法使用 Hibernate 或其他 ORM 使用 Java 准备语句 MySQL 的东西 CREATE TABLE article articleID
  • 使用 ggplot 在背景图像上绘制数据

    我正在尝试在背景图像上绘制一些数据 问题是两个层最终都使用相同的比例 不幸的是 这是有问题的 一个例子 我想绘制一些数据image https dl dropboxusercontent com u 39251 image jpg 正确的
  • java.lang.IllegalStateException:不在主线程上

    当服务器端制造商的表中没有可用数据并且数据对象为空时 我试图从 FragmentActivity 地图中的 Goolge 地图中删除标记 但我收到以下错误 我该如何修复它 Error 07 12 20 53 05 697 E Android
  • 如何获取所有屏幕的 DPI 比例?

    我需要为连接到计算机的每个屏幕 甚至那些没有打开 WPF 窗口的屏幕 获取从 控制面板 gt 显示 设置的 DPI 比例 我见过很多获得 DPI 的方法 例如 http dzimchuk net post Best way to get D
  • 如何将eclipse库项目从github导入到android studio项目?

    我想用全息圆形进度条 https github com passsy android HoloCircularProgressBar作为我的 android studio 项目中的一个库项目 我尝试通过复制到项目中预先创建的 库 文件夹中
  • 如何在不使用 javac 编译源的情况下运行注释处理器(Java 8 无法使用 Apt)

    如何在不使用 javac 编译源的情况下运行注释处理器 Java 8 无法使用 Apt javac 是否有任何参数可以只运行注释处理而不编译所有文件 我想通过 javac 做什么 只需找到带注释的元素并使用定义的注释处理器处理它们 proc
  • 如何将pandas中的每月数据转换为季度数据

    我有每月的数据 我想将其转换为 3 个月的 周期 其中 q1 从 1 月开始 因此 在下面的示例中 前 3 个月的聚合将转换为第 2 季度的开始 所需格式 1996q2 将 3 个月度值混合在一起得到的数据值是 3 列的平均值 从概念上讲
  • 如何格式化 ruby​​ 记录器?

    如何格式化 ruby 记录器 logger Logger new nice log logger formatter proc do severity datetime progname msg NICE msg n end logger
  • C++14 中的网络库

    赫伯 萨特写道here http isocpp org blog 2013 04 trip report iso c spring 2013 meeting 在他的 ISO C 2013 年春季会议旅行报告中 计划将网络库添加到 C 14
  • 从 JSONArray 中删除 JSON 对象 - Jetison

    有没有直接的方法通过使用index html来删除存储在JSONArray中的JSONObject 我尝试了所有的可能性 仍然无法从 JSON 数组中删除 JSON 对象 任何提示都会有帮助 谢谢 在 java json 中 没有直接的方法
  • Rust 无法正确读取整数输入

    我正在尝试使用一个简单的程序来测试我的 Rust 技能 该程序从单行输入中读取多个整数 它编译正确 但不幸的是当它收到输入时1 2 3 它会出现恐慌 说输入不是有效的整数 有人可以解释一下原因 并解释一下如何修复我的程序吗 use std