相关疑难解决方法(0)

如何使指针可以清洗?

在Rust中,我想将枚举视为相等,但仍然能够通过指针区分不同的实例.这是一个玩具示例:

use self::Piece::*;
use std::collections::HashMap;

#[derive(Eq, PartialEq)]
enum Piece {
    Rook,
    Knight,
}

fn main() {
    let mut positions: HashMap<&Piece, (u8, u8)> = HashMap::new();
    let left_rook = Rook;
    let right_rook = Rook;

    positions.insert(&left_rook, (0, 0));
    positions.insert(&right_rook, (0, 7));
}
Run Code Online (Sandbox Code Playgroud)

然而,编译器要我定义HashPiece:

error[E0277]: the trait bound `Piece: std::hash::Hash` is not satisfied
  --> src/main.rs:11:52
   |
11 |     let mut positions: HashMap<&Piece, (u8, u8)> = HashMap::new();
   |                                                    ^^^^^^^^^^^^ the trait `std::hash::Hash` is not implemented for `Piece`
   |
   = note: required …
Run Code Online (Sandbox Code Playgroud)

rust

7
推荐指数
1
解决办法
1029
查看次数

标签 统计

rust ×1