如何在Rust中迭代和更改可变数组中的值?
这就是我取得的成绩:如何在Rust中迭代和更改可变数组中的值?,rust,Rust,这就是我取得的成绩: #[derive(Copy, Clone, Debug)] enum Suits { Hearts, Spades, Clubs, Diamonds, } #[derive(Copy, Clone, Debug)] struct Card { card_num: u8, card_suit: Suits, } fn generate_deck() { let deck: [Option<Card>; 5
#[derive(Copy, Clone, Debug)]
enum Suits {
Hearts,
Spades,
Clubs,
Diamonds,
}
#[derive(Copy, Clone, Debug)]
struct Card {
card_num: u8,
card_suit: Suits,
}
fn generate_deck() {
let deck: [Option<Card>; 52] = [None; 52];
for mut i in deck.iter() {
i = &Some(Card {
card_num: 1,
card_suit: Suits::Hearts,
});
}
for i in deck.iter() {
println!("{:?}", i);
}
}
fn main() {
generate_deck();
}
#[派生(复制、克隆、调试)]
枚举诉讼{
心,
黑桃,
俱乐部,
钻石,
}
#[派生(复制、克隆、调试)]
结构卡{
卡片编号:u8,
卡丁西服:西服,
}
fn生成_deck(){
let deck:[选项;52]=[无;52];
对于甲板上的mut i.iter(){
i=&Some(卡片){
卡片编号:1,
卡片套装:套装::红心,
});
}
对于甲板上的i.iter(){
println!(“{:?}”,i);
}
}
fn main(){
生成_deck();
}
它只打印出
无
。我借钱有什么问题吗?我做错了什么?首先,你的牌组是不可变的。请记住,在rust中,绑定在默认情况下是不可变的:
let mut deck: [Option<Card>; 52] = [None; 52];
最后:循环中的i
是对deck元素的可变引用。要将某些内容分配给引用,需要取消引用:
*i = Some(Card {
card_num: 1,
card_suit: Suits::Hearts,
});
首先,你的牌组是不可变的。请记住,在rust中,绑定在默认情况下是不可变的:
let mut deck: [Option<Card>; 52] = [None; 52];
最后:循环中的i
是对deck元素的可变引用。要将某些内容分配给引用,需要取消引用:
*i = Some(Card {
card_num: 1,
card_suit: Suits::Hearts,
});
iter
=>iter\u mut
-关于错误的线索之一是在输出中:“警告:分配给i
的值永远不会被读取”,行:i=&Some(卡片{
。它没有被读取,因此变异没有任何影响。您正在为变量写入新引用,并且没有给现有引用一个新值。iter
=>iter\u mut
-关于错误的线索之一是输出:“警告:分配给i
的值永远不会被读取”,对于行:i=&Some(Card{
。它没有被读取,因此变异没有任何影响。您正在为变量写入新引用,而没有为现有引用提供新值。