use std::future::Future;
use serde::Deserialize;
use crate::{
client::RustemonClient,
error::Error,
model::resource::{ApiResource, NamedApiResource},
};
pub trait Follow<T>
where
T: for<'a> Deserialize<'a>,
{
fn follow(&self, rustemon_client: &RustemonClient) -> impl Future<Output = Result<T, Error>>;
}
impl<T> Follow<T> for NamedApiResource<T>
where
T: for<'a> Deserialize<'a>,
{
async fn follow(&self, rustemon_client: &RustemonClient) -> Result<T, Error> {
rustemon_client.get_by_url(&self.url).await
}
}
impl<T> Follow<T> for ApiResource<T>
where
T: for<'a> Deserialize<'a>,
{
async fn follow(&self, rustemon_client: &RustemonClient) -> Result<T, Error> {
rustemon_client.get_by_url(&self.url).await
}
}