Skip to main content

made_core/entities/
agent_usage_kind.rs

1use serde::{Deserialize, Serialize};
2
3use crate::DomainError;
4
5/// Provenance class for a reported consumption value.
6#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
7#[serde(rename_all = "snake_case")]
8pub enum AgentUsageKind {
9    Measured,
10    Estimated,
11    Unavailable,
12}
13
14impl TryFrom<&str> for AgentUsageKind {
15    type Error = DomainError;
16    fn try_from(value: &str) -> Result<Self, Self::Error> {
17        match value {
18            "measured" => Ok(Self::Measured),
19            "estimated" => Ok(Self::Estimated),
20            "unavailable" => Ok(Self::Unavailable),
21            _ => Err(DomainError::InvariantViolated {
22                reason: "unsupported agent usage kind",
23            }),
24        }
25    }
26}