📅  最后修改于: 2023-12-03 15:11:53.509000             🧑  作者: Mango
在Rust中,我们可以使用rand
crate来生成随机数。但是如何获取随机枚举呢?在本文中,我们将介绍如何使用Rust创建和获取随机枚举。
要创建随机枚举,我们需要导入rand
库并使用derive
宏来实现Rand
和Enum
特性:
use rand::Rng;
use rand::distributions::{Distribution, Standard};
#[derive(Rand, Enum)]
enum ExampleEnum {
One,
Two,
Three,
}
impl Distribution<ExampleEnum> for Standard {
fn sample<R: Rng + ?Sized>(&self, rng: &mut R) -> ExampleEnum {
match rng.gen_range(0, 3) {
0 => ExampleEnum::One,
1 => ExampleEnum::Two,
_ => ExampleEnum::Three,
}
}
}
在上面的代码中,我们定义了一个枚举ExampleEnum
,并使用derive
宏来实现Rand
和Enum
特性。然后,我们实现Distribution
特性来生成随机枚举的实例。在sample
方法中,我们使用gen_range
方法来随机选择枚举值。
要获取随机枚举,我们可以使用rand::thread_rng()
函数来创建一个线程本地的随机数生成器,并使用rand::distributions::uniform
方法来生成枚举值:
use rand::Rng;
fn get_random_enum() -> ExampleEnum {
let mut rng = rand::thread_rng();
rng.gen::<ExampleEnum>()
}
在上面的代码中,我们创建了一个get_random_enum
函数来获取随机枚举。我们使用rand::thread_rng()
函数来创建一个线程本地的随机数生成器,并使用rng.gen::<ExampleEnum>()
方法来生成随机枚举值。
在本文中,我们介绍了如何使用Rust创建和获取随机枚举。通过使用rand
crate和derive
宏来实现Rand
和Enum
特性,我们可以轻松地创建和获取随机枚举。