gpt4 book ai didi

rust - 迭代二维选项向量

转载 作者:行者123 更新时间:2023-11-29 08:10:40 26 4
gpt4 key购买 nike

我尝试打印一个二维选项向量用于调试目的:

type Board = Vec<Vec<Option<String>>>;
let board: Board = vec![vec![None; 100]; 100];
for row in board.iter() {
for field in row.iter() {
match field {
Some(val) => print!("{}", val),
None => print!(" ")
}
}
println!("");
}

但是,我收到以下错误:

error: type mismatch resolving `<core::slice::Iter<'_, core::option::Option<String>> as
core::iter::Iterator>::Item == core::option::Option<_>`:
expected &-ptr,
found enum `core::option::Option` [E0271]

似乎 iter() 没有返回我认为是迭代器的东西,但我不确定该错误消息的含义。我尝试了 iter_mut、引用、ref、可变引用的变体。

最佳答案

Vec::iter 返回的迭代器产生引用,而不是值本身,即在您的情况下 &Option<String>而不是 Option<String> .您将不得不取消引用从迭代器获得的值,如下所示:

match *field {
Some(ref val) => print!("{}", val),
None => print!(" ")
}

请注意,您还需要使用 refSome模式匹配的 ARM ,避免移动val .

关于rust - 迭代二维选项向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32619964/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com