lm_studio_api/chat/
message.rs

1use crate::prelude::*;
2use super::Role;
3
4// A message
5#[derive(Debug, Clone, From, Serialize, Deserialize)]
6#[from(String, "Self { role: Role::User, content: value.into() }")]
7#[from(&str, "Self { role: Role::User, content: value.into() }")]
8pub struct Message {
9    pub role: Role,
10    pub content: String,
11}
12
13impl Message {
14    // Creates a new message
15    pub fn new<S: Into<String>>(role: Role, content: S) -> Self {
16        Self {
17            role,
18            content: content.into(),
19        }
20    }
21
22    /// Returns content chars count
23    pub fn len(&self) -> usize {
24        self.content.chars().count()
25    }
26
27    /// Returns message text
28    pub fn text(&self) -> &String {
29        &self.content
30    }
31}