mcp_core_rs/
role.rs

1/// Roles to describe the origin/ownership of content
2use serde::{Deserialize, Serialize};
3
4#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
5#[serde(rename_all = "lowercase")]
6pub enum Role {
7    User,
8    Assistant,
9}
10
11impl Default for Role {
12    fn default() -> Self {
13        Role::User
14    }
15}
16
17impl Role {
18    /// Returns all roles as a vector
19    pub fn all() -> Vec<Self> {
20        vec![Role::User, Role::Assistant]
21    }
22    /// Returns the user role
23    pub fn user() -> Self {
24        Role::User
25    }
26    /// Returns the assistant role
27    pub fn assistant() -> Self {
28        Role::Assistant
29    }
30
31    /// Returns the name of the role as a static string
32    pub fn get_name(&self) -> &'static str {
33        match self {
34            Role::User => "user",
35            Role::Assistant => "assistant",
36        }
37    }
38}