1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
/*
    Appellation: links <module>
    Creator: FL03 <jo3mccain@icloud.com>
    Description:
*/
use crate::core::Result;
use serde::{Deserialize, Serialize};
use url::Url;

#[derive(Clone, Debug, Deserialize, Eq, Hash, PartialEq, Serialize)]
pub struct Link<T: std::string::ToString>(T);

#[derive(Clone, Debug, Deserialize, Eq, Hash, PartialEq, Serialize)]
pub struct Uri(pub String);

impl Uri {
    pub fn new(data: String) -> Self {
        Self(data)
    }
    pub fn parse(&self) -> Result<Url> {
        let url = Url::parse(self.0.as_str())?;
        Ok(url)
    }
}