langchain_rust/schemas/
convert.rs1pub trait LangchainIntoOpenAI<T>: Sized {
2 fn into_openai(self) -> T;
3}
4
5pub trait LangchainFromOpenAI<T>: Sized {
6 fn from_openai(openai: T) -> Self;
7}
8
9pub trait OpenAiIntoLangchain<T>: Sized {
10 fn into_langchain(self) -> T;
11}
12
13pub trait OpenAIFromLangchain<T>: Sized {
14 fn from_langchain(langchain: T) -> Self;
15}
16
17impl<T, U> LangchainIntoOpenAI<U> for T
18where
19 U: OpenAIFromLangchain<T>,
20{
21 fn into_openai(self) -> U {
22 U::from_langchain(self)
23 }
24}
25
26impl<T, U> OpenAiIntoLangchain<U> for T
27where
28 U: LangchainFromOpenAI<T>,
29{
30 fn into_langchain(self) -> U {
31 U::from_openai(self)
32 }
33}
34
35pub trait TryLangchainIntoOpenAI<T>: Sized {
38 type Error;
39
40 fn try_into_openai(self) -> Result<T, Self::Error>;
41}
42
43pub trait TryLangchainFromOpenAI<T>: Sized {
44 type Error;
45
46 fn try_from_openai(openai: T) -> Result<Self, Self::Error>;
47}
48
49pub trait TryOpenAiIntoLangchain<T>: Sized {
50 type Error;
51
52 fn try_into_langchain(self) -> Result<T, Self::Error>;
53}
54
55pub trait TryOpenAiFromLangchain<T>: Sized {
56 type Error;
57
58 fn try_from_langchain(langchain: T) -> Result<Self, Self::Error>;
59}
60
61impl<T, U> TryLangchainIntoOpenAI<U> for T
62where
63 U: TryOpenAiFromLangchain<T>,
64{
65 type Error = U::Error;
66
67 fn try_into_openai(self) -> Result<U, U::Error> {
68 U::try_from_langchain(self)
69 }
70}
71
72impl<T, U> TryOpenAiIntoLangchain<U> for T
73where
74 U: TryLangchainFromOpenAI<T>,
75{
76 type Error = U::Error;
77
78 fn try_into_langchain(self) -> Result<U, U::Error> {
79 U::try_from_openai(self)
80 }
81}