使用闭包解析两列字母

Using closures to parse two columns of letters

提问人:thefrollickingnerd 提问时间:11/3/2023 更新时间:11/3/2023 访问量:42

问:

我有一个函数,它对字符串的迭代器进行操作,目的是能够接收字符串,例如并将其转换为. 匹配函数是A X(1, 2)

fn convert_throw(c: char) ->  i32 {
    match c {
        'A' | 'Y' => 1,
        'B' | 'X' => 2,
        'C' | 'Z' => 3,
        _ => panic!("Unexpected symbol")
    }
}

执行处理的迭代器函数是

fn read_throw_pairs(i: impl Iterator<Item = String>) -> (i32, i32) {
    i
        .map(|string| -> Vec<i32> {
            string.split(" ")
                .take(2)
                .map(|element| -> i32 {convert_throw(element.chars().next().expect("Should be char"))})
                .collect()
        })
        .map(|mut item| (item.swap_remove(0), item.swap_remove(0)))
        
}

上述函数的灵感来自此堆栈帖子。 我无法编译它,我不确定我错过了什么。 此函数的错误是

expected `(i32, i32)`, found `Map<Map<..., ...>, ...>`

但是使用 collect() 或 unzip() 也会导致问题。

防锈 瓶盖

评论


答: 暂无答案