相关疑难解决方法(0)

如何忽略从Rust函数返回的错误并继续执行?

当知道某些代码可能会抛出错误时,我们会使用try/catch块来忽略这些错误并继续.当错误不重要但我们只想记录它时,这样做:

try{
    int i = 1/0;
} catch( ArithmeticException e){
    System.out.println("Encountered an error but would proceed.");
} 
x = y;
Run Code Online (Sandbox Code Playgroud)

Java中的这种构造将继续执行x = y;.

我可以利用match这个或任何其他构造吗?

我确实看到了一个try!宏,但是如果方法的返回类型出现错误,它可能会返回Result.

我想在UT中使用这样的构造,以确保即使在发生错误之后它仍继续运行.

rust

7
推荐指数
1
解决办法
4018
查看次数

如何返回一个由一个函数生成的迭代器,该函数采用"自我"(当自己在本地创建时)?

更新:帖子的标题已更新,答案已移出问题.简短的回答是你不能.请看我对这个问题的回答.

我下面的错误处理的博客文章在这里(GitHub的,因为这是在这里),我试图进行一些修改代码,以便在search函数返回Iterator,而不是一个Vec.这太疯狂了,我被困住了.

我已经达到了这一点:

fn search<'a, P: AsRef<Path>>(file_path: &Option<P>, city: &str)
    -> Result<FilterMap<csv::reader::DecodedRecords<'a, Box<Read>, Row>,
                        FnMut(Result<Row, csv::Error>)
                            -> Option<Result<PopulationCount, csv::Error>>>,
              CliError>  {
    let mut found = vec![];
    let input: Box<io::Read> = match *file_path {
        None => Box::new(io::stdin()),
        Some(ref file_path) => Box::new(try!(fs::File::open(file_path))),
    };

    let mut rdr = csv::Reader::from_reader(input);
    let closure = |row: Result<Row, csv::Error>| -> Option<Result<PopulationCount, csv::Error>> {
        let row = match row {
            Ok(row) => row,
            Err(err) => return Some(Err(From::from(err))),
        }; …
Run Code Online (Sandbox Code Playgroud)

rust

5
推荐指数
2
解决办法
1115
查看次数

如何将文件中的数字列表读入 Vec?

我正在尝试将文件中的数字列表(每行都有一个数字)读入Vec<i64>Rust 中。我可以使用BufReader. 但是,我似乎无法从Result. 包裹的枚举中获取字符串的值BufReader

那么如何获取这些值进行Result解析,以便它们可以Vec用字符串以外的另一种类型填充 a 呢?

我尝试过的:

  1. 使用一个for循环,我可以打印这些值来证明它们在那里,但是当我尝试使用该行进行编译时,它会在解析时出现恐慌numbers.append(...)
fn load_from_file(file_path: &str) {
    let file = File::open(file_path).expect("file wasn't found.");
    let reader = BufReader::new(file);
    let numbers: Vec<i64> = Vec::new();

    for line in reader.lines() {
        // prints just fine
        println!("line: {:?}", line);
        numbers.append(line.unwrap().parse::<i64>());
    }
}
Run Code Online (Sandbox Code Playgroud)
  1. 或者,我尝试进行映射,但在将值放入Vec<i64>我要填充的值时遇到了同样的问题。
fn load_from_file(file_path: &str) {
    let file = File::open(file_path).expect("file wasn't found.");
    let reader = BufReader::new(file);

    let numbers: Vec<i64> = …
Run Code Online (Sandbox Code Playgroud)

file-io enums numbers vector rust

4
推荐指数
1
解决办法
3635
查看次数

标签 统计

rust ×3

enums ×1

file-io ×1

numbers ×1

vector ×1