We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/oculairmedia/Letta-MCP-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server
use core::mem::ManuallyDrop;
use crate::Destructure;
pub trait Destructuring {}
pub trait DestructuringFor<T>: Destructuring {
type Destructurer: Destructurer<Inner = T>;
}
pub trait Destructurer {
type Inner: Destructure;
fn new(inner: Self::Inner) -> Self;
fn inner(&self) -> &Self::Inner;
fn inner_mut(&mut self) -> &mut Self::Inner;
}
pub trait Test<'a> {
type Test;
}
pub struct Borrow<T>(T);
impl<T: Destructure> Destructurer for Borrow<T> {
type Inner = T;
fn new(inner: T) -> Self {
Self(inner)
}
fn inner(&self) -> &Self::Inner {
&self.0
}
fn inner_mut(&mut self) -> &mut Self::Inner {
&mut self.0
}
}
impl<'a, T: 'a + Destructure> Test<'a> for Borrow<T> {
type Test = &'a T::Underlying;
}
pub struct Move<T>(ManuallyDrop<T>);
impl<T: Destructure> Destructurer for Move<T> {
type Inner = T;
fn new(inner: T) -> Self {
Self(ManuallyDrop::new(inner))
}
fn inner(&self) -> &Self::Inner {
&self.0
}
fn inner_mut(&mut self) -> &mut Self::Inner {
&mut self.0
}
}
impl<'a, T: 'a + Destructure> Test<'a> for Move<T>
where
T::Underlying: Sized,
{
type Test = T::Underlying;
}