lm_studio_api_extended/embedding/
embed_data.rs1use 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}