use std::path::PathBuf;
use serde::{Serialize,Deserialize};
#[derive(Clone,Hash,Debug,Serialize,Deserialize,PartialEq,Eq,PartialOrd,Ord)]
pub struct Metadata {
size: u64,
path: PathBuf,
}
impl Metadata {
pub(crate) const fn new(size: u64, path: PathBuf) -> Self {
Self { size, path }
}
pub(crate) const fn zero(path: PathBuf) -> Self {
Self { size: 0, path }
}
pub const fn size(&self) -> u64 {
self.size
}
pub fn path(self) -> PathBuf {
self.path
}
pub fn to_parts(&self) -> (u64, PathBuf) {
(self.size, self.path.clone())
}
pub fn into_parts(self) -> (u64, PathBuf) {
(self.size, self.path)
}
}
impl std::fmt::Display for Metadata {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
#[cfg(feature = "bytesize")]
{
write!(f, "{} @ {}", bytesize::ByteSize::b(self.size), self.path.display())
}
#[cfg(not(feature = "bytesize"))]
{
write!(f, "{} @ {}", self.size, self.path.display())
}
}
}