use crate::Person;
#[derive(Debug, Clone, PartialEq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct Scored<T> {
pub value: T,
pub confidence: f32,
}
#[derive(Debug, Clone, Default, PartialEq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[non_exhaustive]
pub struct ScoredExtracted {
pub emails: Vec<Scored<String>>,
pub phones: Vec<Scored<String>>,
pub fax: Option<Scored<String>>,
pub postcode: Option<Scored<String>>,
pub city: Option<Scored<String>>,
pub street: Option<Scored<String>>,
pub hr_number: Option<Scored<String>>,
pub hr_court: Option<Scored<String>>,
pub vat_id: Option<Scored<String>>,
pub tax_number: Option<Scored<String>>,
pub iban: Option<Scored<String>>,
pub bic: Option<Scored<String>>,
pub legal_form: Option<Scored<String>>,
pub year_founded: Option<Scored<i32>>,
pub persons: Vec<Scored<Person>>,
pub register_type: Option<Scored<String>>,
pub supervisory_authority: Option<Scored<String>>,
pub professional_chamber: Option<Scored<String>>,
pub de_mail: Option<Scored<String>>,
pub dispute_resolution_url: Option<Scored<String>>,
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn scored_holds_value_and_confidence() {
let s = Scored {
value: "info@a.de".to_string(),
confidence: 0.85,
};
assert_eq!(s.value, "info@a.de");
assert!((s.confidence - 0.85).abs() < f32::EPSILON);
let d = ScoredExtracted::default();
assert!(d.emails.is_empty() && d.iban.is_none());
}
}