这是我走了多远:
#[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();
}
Run Code Online (Sandbox Code Playgroud)
它只打印出来None。我的借款有问题吗?我究竟做错了什么?
首先,你的牌组是不可变的。请记住,在锈绑定中默认情况下是不可更改的:
let mut deck: [Option<Card>; 52] = [None; 52];
Run Code Online (Sandbox Code Playgroud)
接下来,要获取可以修改的迭代器,请使用iter_mut():
for i in deck.iter_mut() {
Run Code Online (Sandbox Code Playgroud)
最后:i循环中的,是对Deck元素的可变引用。要将某些内容分配给引用,您需要取消引用:
*i = Some(Card {
card_num: 1,
card_suit: Suits::Hearts,
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
102 次 |
| 最近记录: |