use crate::error::{Error, Result};
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum RegisterProducerResult {
Created,
AlreadyExists,
}
impl RegisterProducerResult {
pub fn to_i32(self) -> i32 {
match self {
Self::Created => 0,
Self::AlreadyExists => 1,
}
}
pub fn try_from_i32(value: i32) -> Result<Self> {
match value {
0 => Ok(Self::Created),
1 => Ok(Self::AlreadyExists),
_ => Err(Error::IllegalArgument {
message: format!("Unsupported RegisterProducerResult: {value}"),
}),
}
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_register_producer_result_roundtrip() {
for r in [
RegisterProducerResult::Created,
RegisterProducerResult::AlreadyExists,
] {
assert_eq!(RegisterProducerResult::try_from_i32(r.to_i32()).unwrap(), r);
}
}
#[test]
fn test_register_producer_result_unknown() {
assert!(RegisterProducerResult::try_from_i32(99).is_err());
}
}