fast-down-gui 0.1.45

超级快的下载器图形化界面
Documentation
mod v1;
mod v2;
mod v3;
mod v4;
mod v5;
mod v6;

use crate::persist::{
    DatabaseInner,
    loader::{v1::V1Loader, v2::V2Loader, v3::V3Loader, v4::V4Loader, v5::V5Loader, v6::V6Loader},
};

pub trait Loader {
    fn load(&self, bytes: &[u8]) -> Option<DatabaseInner>;
}

#[derive(Debug, Clone)]
pub struct BoxLoader;

impl Loader for BoxLoader {
    fn load(&self, bytes: &[u8]) -> Option<DatabaseInner> {
        V6Loader
            .load(bytes)
            .or_else(|| V5Loader.load(bytes))
            .or_else(|| V4Loader.load(bytes))
            .or_else(|| V3Loader.load(bytes))
            .or_else(|| V2Loader.load(bytes))
            .or_else(|| V1Loader.load(bytes))
    }
}