Skip to main content

lm_studio_api_extended/embedding/
embed_data.rs

1use core::fmt;
2use std::str::FromStr;
3use serde_json;
4
5use crate::prelude::*;
6use super::*;
7
8
9#[derive(Debug)]
10pub struct ParseEmbeddingDataError(String);
11
12impl fmt::Display for ParseEmbeddingDataError {
13    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
14        write!(f, "Failed to parse EmbeddingData: {}", self.0)
15    }
16}
17
18impl std::error::Error for ParseEmbeddingDataError {}
19
20
21#[derive(Serialize, Deserialize, Clone)]
22pub struct EmbeddingData {
23    pub object: String,
24    pub data: Vec<EmbeddingResponse>,
25    pub model: String,
26    pub usage: EmbeddingUsage
27}
28
29impl FromStr for EmbeddingData {
30    type Err = ParseEmbeddingDataError;
31
32    fn from_str(s: &str) -> std::result::Result<Self, Self::Err> {
33        serde_json::from_str(s)
34            .map_err(|e: serde_json::Error| ParseEmbeddingDataError(e.to_string()))
35    }
36}
37
38impl fmt::Display for EmbeddingData {
39    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
40        match serde_json::to_string_pretty(self) {
41            Ok(s) => write!(f, "{}", s),
42            Err(e) => write!(f, "<failed to display EmbeddingData: {}>", e)
43        }
44    }
45}