rust - 在字符串拆分上使用映射时无法推断类型
问题描述
我目前正在尝试通过 Advent of Code 来学习 Rust。我有一个包含整数的文件(每行一个)作为输入。我现在尝试使用以下代码解析该文件:
use std::fs::File;
use std::io::prelude::*;
fn main() -> std::io::Result<()> {
let mut file = File::open("./input/day1_input.txt")?;
let mut contents = String::new();
file.read_to_string(&mut contents)?;
let split = contents.split("\n").map(|x| x.parse().unwrap());
for x in split {
println!("{}",x);
}
Ok(())
}
在 for 循环中拆分时出现编译器错误,错误消息为:“无法推断类型”。有人可以解释一下为什么我会收到此消息以及执行此操作的正确方法是什么?欢迎其他提示如何更有效地完成此解析,但不是该问题的主要原因。
解决方案
编译器不知道您正在解析哪种特定数字类型。尝试parse::<u32>()
或任何其他。
作为文件阅读建议,请注意大文件,因为您在单个String
. 由于 a 中的每个内存String
都必须是连续的,因此可能没有足够的连续内存块来存储整个文件的内容。因此,您最好将您的内容包装File
在 a 中BufReader
,这样您就可以请求部分内容,而不必担心进行许多极其昂贵的操作系统调用。然后你以可控大小读取内容,比如几兆字节的行或块。
推荐阅读
- php - Woocommerce API 获取身份验证错误
- python - 如何将 curl 转换为 python 请求
- php - $_FILES 为空,用于大文件上传
- android - 无法解析导入android.support.v7.widget.RecyclerView;
- node.js - 如何为我的代码修复“UnhandledPromiseRejectionWarning”
- scala - 如何为 Double 生成 Scala Range?
- google-cloud-platform - googleapiclient HttpError 403 需要权限
- php - 无法将“KEYS”与 redis-cluster 一起使用
- python - Python:为什么我的打印语句没有为我的 else 运行?
- php - 如何为每个循环 php 创建分层结构的文件夹?