pub use rand::{self, Rng};
pub use random_variant_macro::*;
mod std_impls;
pub use std_impls::*;
#[cfg(feature = "rv_heapless")]
mod heapless_impl;
#[cfg(feature = "rv_heapless")]
pub use heapless_impl::*;
#[cfg(feature = "uuid")]
mod uuid;
#[cfg(feature = "uuid")]
pub use uuid::*;
pub trait RandomVariant {
fn random_variant<R: Rng>(rng: &mut R) -> Self;
}
#[allow(dead_code)]
#[cfg(test)]
fn example() {
use crate as random_variant;
use serde::Serialize;
use std::net::IpAddr;
#[derive(RandomVariant, Serialize)]
enum Message {
Log(String),
ErrorCode(u32),
Rebooting,
}
#[derive(RandomVariant, Serialize)]
struct LoggedMessage {
#[serde(flatten)]
t: Message,
add: IpAddr,
}
let mut rng = crate::rand::thread_rng();
for _i in 0..100 {
let v = LoggedMessage::random_variant(&mut rng);
serde_json::to_string(&v).unwrap();
}
}
#[cfg(test)]
mod test;