function - 锈——“?” 只能在返回 'Result' 的函数中使用
问题描述
供参考:我是一名 Java 程序员,刚接触 Rust
我正在尝试读取具有 2 个输入的文件,即数组大小和数组元素。
输入:
3
1 2 3
我想创建一个通过命令行中的参数读取文件的函数,所以我编写了以下代码:(注意:它非常难看,因为我正在更改函数)
fn getArraySize() -> usize
{
let args: Vec<String> = env::args().collect();
let input = File::open(&args[1])?;
let buffered = BufReader::new(input);
let mut counter: i32 = 0;
let arraySize: usize = 0;
for line in buffered.lines() {
if counter == 0
{
let line = String::from(line?);
arraySize = line.parse().unwrap();
println!("{}", arraySize);
counter += 1;
}
}
arraySize
}
哪个是设置 const 值的函数
const ARRAYSIZE: usize = getArraySize();
我的问题是我似乎无法弄清楚如何让这条线工作
let input = File::open(&args[1])?;
我尝试将 .expected 附加到它,但什么也没发生。我尝试了在 Google 上可以找到的所有内容,但是如果没有全局变量我可以更改,我不知道如何获取文件以便我的函数可以读取它并返回 arraySize。
解决方案
你可以想到?
这里使用的语法:
let input = File::open(&args[1])?;
作为这个的捷径(或多或少 - 没有测试过这段代码):
let input = match File::open(&args[1]) {
Ok(input) => input,
Err(e) => return Err(e),
};
假设File::open
返回Result<T, E>
- 要使第二段代码工作,包含函数必须返回Result<U, E>
where T
may or may not be U
。如果不是这种情况,那么return Err(...)
返回的值将是无效的。
推荐阅读
- unit-testing - 是否可以使用 mockk 监视我无法控制其创建的对象?
- generics - 将未调整大小和基于动态调度的特征作为参数传递的问题
- python-3.x - 如何强制 psql 在 Windows 10 系统上检测 .pgpass 文件?
- npm - 从 npm 包中删除丢失文件夹的另一种方法?
- html - net::ERR_HTTP2_PROTOCOL_ERROR 200 渲染大型 html 文件时
- javascript - 多个按钮事件 = 未捕获的类型错误:无法读取未定义的属性“删除”
- game-development - 如何在 Godot 中实现一个单词搜索游戏的逻辑
- javascript - TypeError:无法读取未定义的反应redux的属性
- python - 用于预测的 TensorFlow 轻量级
- python-3.x - 比较两个数据框并根据匹配添加特定的列值