fetchlib 0.0.13

A lib for remote server connection through ssh
Documentation
use std::str::FromStr;

use crate::fs::FileMetaData;

#[derive(Clone, Copy, Debug, PartialEq)]
pub enum FileSortType {
    FirstCreated,
    LastCreated,
    LastModified,
}

impl FromStr for FileSortType {
    type Err = String;
    fn from_str(s: &str) -> Result<Self, Self::Err> {
        match s {
            "first-created" => Ok(Self::FirstCreated),
            "last-modified" => Ok(Self::LastModified),
            "last-created" => Ok(Self::LastCreated),
            _ => Err(String::from("Unkown format found")),
        }
    }
}

impl ToString for FileSortType {
    fn to_string(&self) -> String {
        match self {
            Self::FirstCreated => "first-created",
            Self::LastCreated => "last-created",
            Self::LastModified => "last-modified",
        }
        .to_string()
    }
}

impl FileSortType {
    pub fn sort_vector(&self, files: &mut Vec<FileMetaData>) {
        match self {
            Self::FirstCreated => {
                files.sort_by(|a, b| a.mtime.unwrap().cmp(&b.mtime.unwrap()));
            }
            Self::LastModified => {
                files.sort_by(|a, b| b.mtime.unwrap().cmp(&a.mtime.unwrap()));
            }
            Self::LastCreated => {
                files.sort_by(|a, b| b.atime.unwrap().cmp(&a.atime.unwrap()));
            }
        }
    }
}