convertor 2.6.12

A profile converter for surge/clash.
Documentation
use crate::url::convertor_url::ConvertorUrl;
use serde::{Deserialize, Serialize};
use std::fmt;
use std::fmt::Display;

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct UrlResult {
    pub raw_url: ConvertorUrl,
    pub raw_profile_url: ConvertorUrl,
    pub profile_url: ConvertorUrl,
    pub sub_logs_url: ConvertorUrl,
    pub rule_providers_url: Vec<ConvertorUrl>,
}

impl Display for UrlResult {
    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
        writeln!(f, "{}", self.raw_url.desc)?;
        writeln!(f, "{}", self.raw_url)?;
        writeln!(f, "{}", self.profile_url.desc)?;
        writeln!(f, "{}", self.profile_url)?;
        writeln!(f, "{}", self.raw_profile_url.desc)?;
        writeln!(f, "{}", self.raw_profile_url)?;
        writeln!(f, "{}", self.sub_logs_url.desc)?;
        writeln!(f, "{}", self.sub_logs_url)?;
        for url in &self.rule_providers_url {
            writeln!(f, "{}", url.desc)?;
            writeln!(f, "{url}")?;
        }
        Ok(())
    }
}