1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
use crate::storage::filetype::FileType;
use crate::storage::dtf_file_metadata::DTFFileMetadata;
use serde::ser::Serialize;
use std::io;

/// Marker trait indicating MetaData structs
pub trait FileMetadata: Default + Serialize {}

/// Get file metadata from filiename
pub fn from_fname(fname: &str) -> Result<impl FileMetadata, io::Error> {
    let ftype = FileType::from_fname(fname);

    match ftype {
        FileType::RawDtf => DTFFileMetadata::new(fname),
    }
}