use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, derive_more::Display)]
pub enum Role {
#[display("system")]
System,
#[display("user")]
User,
#[display("assistant")]
Assistant,
#[display("tool")]
Tool,
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn display() {
assert_eq!(Role::System.to_string(), "system");
assert_eq!(Role::User.to_string(), "user");
assert_eq!(Role::Assistant.to_string(), "assistant");
assert_eq!(Role::Tool.to_string(), "tool");
}
#[test]
fn serde_roundtrip() {
let json = serde_json::to_string(&Role::Assistant).unwrap();
assert_eq!(json, "\"Assistant\"");
let role: Role = serde_json::from_str(&json).unwrap();
assert_eq!(role, Role::Assistant);
}
}