use core::fmt;
use fluent_uri::Uri;
use serde_json::Value;
pub trait Retrieve: Send + Sync {
fn retrieve(&self, uri: &Uri<&str>) -> Result<Value, Box<dyn std::error::Error + Send + Sync>>;
}
#[derive(Debug, Clone)]
struct DefaultRetrieverError;
impl fmt::Display for DefaultRetrieverError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.write_str("Default retriever does not fetch resources")
}
}
impl std::error::Error for DefaultRetrieverError {}
#[derive(Debug, PartialEq, Eq)]
pub struct DefaultRetriever;
impl Retrieve for DefaultRetriever {
fn retrieve(&self, _: &Uri<&str>) -> Result<Value, Box<dyn std::error::Error + Send + Sync>> {
Err(Box::new(DefaultRetrieverError))
}
}