use crate::{plugin::deser::*, utils};
use http::Uri;
use serde::{Deserialize, Serialize};
#[derive(Deserialize, Debug, Serialize)]
pub struct Info {
pub marker: String,
pub id: u64,
#[serde(with = "serde_uri")]
pub from: Uri,
pub rank: i16,
pub gap: f64,
pub encoding: String,
pub unique: bool,
pub used: u32,
pub created: f64,
pub able: f64,
}
impl Clone for Info {
fn clone(&self) -> Self {
Self {
marker: self.marker.clone(),
id: self.id,
from: self.from.clone(),
rank: self.rank,
gap: self.gap,
encoding: self.encoding.clone(),
unique: self.unique,
used: self.used,
created: utils::now(),
able: self.able,
}
}
}
impl Default for Info {
fn default() -> Self {
let now = utils::now();
Self {
marker: "".into(),
id: 0,
from: Uri::default(),
rank: 0,
gap: 0.0,
encoding: "utf-8".into(),
unique: false,
used: 0,
created: now,
able: now,
}
}
}
#[test]
fn test_info() {
let info = Info::default();
assert_eq!(info.unique, true);
assert_eq!(info.used, 0);
assert_eq!(info.rank, 0);
assert_eq!(info.encoding, "utf-8".to_string());
}