我有一个枚举,我必须在其中执行模式匹配.但由于我在堆栈内存有限(<;4KB)的VM上运行该程序,所以我在堆上使用Box
来分配枚举.但在执行模式匹配时,我必须取消对它的引用,这会导致它被分配到堆栈上,而这是我不需要的.是否可以对已装箱的值执行模式匹配?
我想要实现如下所示.
pub enum MyEnum {
A,
B,
}
let a = Box::new(MyEnum::A);
let value = match a {
MyEnum::A => 1,
MyEnum::B => 2
}
这就是我得到的错误
error[E0308]: mismatched types
--> src/entrypoint.rs:119:9
|
118 | match a {
| ---
| |
| this expression has type `Box<MyEnum>`
| help: consider dereferencing the boxed value: `*a`
119 | MyEnum::A => 1,
| ^^^^^^^^^^^^^^^ expected struct `Box`, found enum `MyEnum`
|
= note: expected struct `Box<MyEnum>`
found enum `MyEnum`
我try 按照编译器的建议取消对它的引用,但由于在取消引用时它是在堆栈上分配的,所以我无法使用它.我希望在不取消引用的情况下匹配枚举.