相关疑难解决方法(0)

为什么枚举需要额外的内存大小?

我的理解是,enum就像union在C中一样,系统将在枚举中分配最大的数据类型.

enum E1 {
    DblVal1(f64),
}

enum E2 {
    DblVal1(f64),
    DblVal2(f64),
    DblVal3(f64),
    DblVal4(f64),
}

fn main() {
    println!("Size is {}", std::mem::size_of::<E1>());
    println!("Size is {}", std::mem::size_of::<E2>());
}
Run Code Online (Sandbox Code Playgroud)

为什么E1按预期占用8个字节,但E2占用16个字节?

rust

7
推荐指数
2
解决办法
2445
查看次数

6
推荐指数
1
解决办法
1417
查看次数

如何在Rust中指定枚举的基础类型?

给定一个带有一些未键入值的简单枚举,可能希望此枚举的大小使用较小的整数类型,然后使用默认值.例如,这提供了将枚举存储在数组中的能力u8.

enum MyEnum { 
    A = 0,
    B,
    C,
}
Run Code Online (Sandbox Code Playgroud)

可以使用u8数组并将它们与某些常量进行比较,但我希望使用枚举来确保在匹配语句中处理所有可能性.

如何指定它以size_of匹配所需的整数类型?

enums rust

3
推荐指数
1
解决办法
2361
查看次数

有没有办法使用布尔值作为枚举的基础类型?

我决定实现一个使用几个标志的协议,所以我开始enum为标志定义s.然而,当我想定义有两个值可以是一个标志true或者false我得到一个错误信息:

// The protocol definition says that the flag 
// can have two values true or false, so I could just use 
// plain bool, but I want another name for true and false.
enum Flag {
    ONE = true,
    TWO = false,
}
Run Code Online (Sandbox Code Playgroud)
error[E0308]: mismatched types
 --> src/lib.rs:5:11
  |
5 |     ONE = true,
  |           ^^^^ expected isize, found bool

error[E0308]: mismatched types
 --> src/lib.rs:6:11
  |
6 |     TWO = false,
  |           ^^^^^ …
Run Code Online (Sandbox Code Playgroud)

rust

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

标签 统计

rust ×4

c ×1

enums ×1