asimov_prompt/
prompt_role.rs1use 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}