本文介绍了如何有条件地检查枚举是一个变体还是另一个变体?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个带有两个变体的枚举:
I have an enum with two variants:
enum DatabaseType { Memory, RocksDB, }如果要在有条件的函数中进行检查,则需要什么条件如果参数是 DatabaseType :: Memory 或 DatabaseType :: RocksDB ?
What do I need in order to make a conditional if inside a function that checks if an argument is DatabaseType::Memory or DatabaseType::RocksDB?
fn initialize(datastore: DatabaseType) -> Result<V, E> { if /* Memory */ { //.......... } else if /* RocksDB */ { //.......... } }推荐答案
首先,返回并重新阅读一本免费的Rust官方书: Rust编程语言 ,特别是有关枚举的章节。
fn initialize(datastore: DatabaseType) { match datastore { DatabaseType::Memory => { // ... } DatabaseType::RocksDB => { // ... } } }if let
if let
fn initialize(datastore: DatabaseType) { if let DatabaseType::Memory = datastore { // ... } else { // ... } }==
==
#[derive(PartialEq)] enum DatabaseType { Memory, RocksDB, } fn initialize(datastore: DatabaseType) { if DatabaseType::Memory == datastore { // ... } else { // ... } }另请参见:
- 如何在不进行模式匹配的情况下比较枚举
- 从没有模式匹配的枚举中读取
- 仅按变量而不是值比较枚举
- How to compare enum without pattern matching
- Read from an enum without pattern matching
- Compare enums only by variant, not value
更多推荐
如何有条件地检查枚举是一个变体还是另一个变体?
发布评论