gpt4 book ai didi

rust - 如何在 Rust 中迭代和更改可变数组中的值?

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

这是我得到的结果:

#[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();
}

它只打印出None。我的借款有问题吗?我做错了什么?

最佳答案

首先,你的套牌是不可改变的。请记住,默认情况下,Rust 绑定(bind)是不可变的:

let mut deck: [Option<Card>; 52] = [None; 52];

接下来,要获得一个可以修改的迭代器,您可以使用 iter_mut():

for i in deck.iter_mut() {

最后:循环中的 i 是对 deck 元素的可变引用。要将某些内容分配给引用,您需要取消引用它:

*i = Some(Card {
card_num: 1,
card_suit: Suits::Hearts,
});

Playground Link

关于rust - 如何在 Rust 中迭代和更改可变数组中的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56963011/

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