asimov_prompt/
prompt_role.rs

1// This is free and unencumbered software released into the public domain.
2
3use derive_more::{Display, From, FromStr};
4use dogma::{
5    prelude::{Cow, String, ToString},
6    traits::{Labeled, Named},
7};
8
9#[derive(Clone, Debug, Display, Eq, From, FromStr, Hash, Ord, PartialEq, PartialOrd)]
10pub enum PromptRole {
11    #[display("system")]
12    System,
13
14    #[display("developer")]
15    Developer,
16
17    #[display("user")]
18    User,
19
20    #[display("assistant")]
21    Assistant,
22}
23
24impl Named for PromptRole {
25    fn name(&self) -> Cow<str> {
26        self.to_string().into()
27    }
28}
29
30impl Labeled for PromptRole {
31    fn label(&self) -> Cow<str> {
32        use PromptRole::*;
33        Cow::from(match self {
34            System => "System",
35            Developer => "Developer",
36            User => "User",
37            Assistant => "Assistant",
38        })
39    }
40}
41
42impl Into<String> for PromptRole {
43    fn into(self) -> String {
44        self.to_string()
45    }
46}