#![deny(
missing_docs,
rustdoc::missing_crate_level_docs,
missing_debug_implementations,
rustdoc::missing_doc_code_examples,
unused
)]
pub use crate::error::SauceError;
pub use async_trait::async_trait;
pub mod prelude;
pub mod sources;
pub mod error;
#[async_trait]
pub trait Sauce {
async fn build_url(&self, url: &str) -> Result<String, SauceError>;
async fn check_sauce(&self, url: &str) -> Result<SauceResult, SauceError>;
async fn check_sauces(&self, urls: &[String]) -> Result<Vec<SauceResult>, SauceError> {
let mut out = Vec::new();
for x in urls {
let res = self.check_sauce(x).await?;
out.push(res);
}
Ok(out)
}
}
#[derive(Debug, Clone, PartialOrd, PartialEq, Default)]
pub struct SauceResult {
pub original_url: String,
pub items: Vec<SauceItem>,
}
#[derive(Debug, Clone, PartialOrd, PartialEq, Default)]
pub struct SauceItem {
pub link: String,
pub similarity: f32,
}