extensions_rs/types/
mod.rs

1pub mod image;
2
3use self::image::Image;
4// use crate::ext::Image;
5use crate::Extension::*;
6use enum_iterator::Sequence;
7
8#[derive(Debug, Copy, Clone, PartialEq, PartialOrd, Hash, Eq, Ord, Sequence)]
9pub enum Extension {
10    Image(Image),
11    None,
12}
13
14#[derive(Debug, PartialEq, Clone, Copy, Sequence)]
15pub enum ExtType {
16    Image,
17    None,
18}
19
20impl Extension {
21    pub fn to_str(self) -> &'static str {
22        match self {
23            self::Image(i) => match i {
24                Image::Ext3DM => "3dm",
25                Image::Ext3DS => "3ds",
26                Image::ExtAI => "ai",
27                Image::ExtBMP => "bmp",
28                Image::ExtDDS => "dds",
29                Image::ExtDWG => "dwg",
30                Image::ExtDXF => "dxf",
31                Image::ExtEPS => "eps",
32                Image::ExtGIF => "gif",
33                Image::ExtGPX => "gpx",
34                Image::ExtJPG => "jpg",
35                Image::ExtJPEG => "jpeg",
36                Image::ExtKML => "kml",
37                Image::ExtKMZ => "kmz",
38                Image::ExtMAX => "max",
39                Image::ExtPNG => "png",
40                Image::ExtPS => "ps",
41                Image::ExtPSD => "psd",
42                Image::ExtSVG => "svg",
43                Image::ExtTGA => "tga",
44                Image::ExtTHM => "thm",
45                Image::ExtTIF => "tif",
46                Image::ExtTIFF => "tiff",
47                Image::ExtWEBP => "webp",
48                Image::ExtXCF => "xcf",
49                Image::ExtYUV => "yuv",
50                Image::None => "",
51            },
52            self::None => "",
53        }
54    }
55}
56
57impl From<Image> for Extension {
58    fn from(image: Image) -> Self {
59        match image {
60            Image::Ext3DM => Self::Image(Image::Ext3DM),
61            _ => Self::None,
62        }
63    }
64}
65
66#[cfg(test)]
67mod tests {
68    use super::*;
69
70    #[test]
71    fn test_ext_from_image() {
72        assert_eq!(
73            Extension::Image(Image::Ext3DM),
74            Extension::from(Image::Ext3DM)
75        );
76    }
77
78    #[test]
79    fn test_ext_image_to_str() {
80        assert_eq!("3dm", Extension::Image(Image::Ext3DM).to_str());
81        assert_eq!("3ds", Extension::Image(Image::Ext3DS).to_str());
82        assert_eq!("ai", Extension::Image(Image::ExtAI).to_str());
83        assert_eq!("bmp", Extension::Image(Image::ExtBMP).to_str());
84        assert_eq!("dds", Extension::Image(Image::ExtDDS).to_str());
85        assert_eq!("dwg", Extension::Image(Image::ExtDWG).to_str());
86        assert_eq!("dxf", Extension::Image(Image::ExtDXF).to_str());
87        assert_eq!("eps", Extension::Image(Image::ExtEPS).to_str());
88        assert_eq!("gif", Extension::Image(Image::ExtGIF).to_str());
89        assert_eq!("gpx", Extension::Image(Image::ExtGPX).to_str());
90        assert_eq!("jpg", Extension::Image(Image::ExtJPG).to_str());
91        assert_eq!("jpeg", Extension::Image(Image::ExtJPEG).to_str());
92        assert_eq!("kml", Extension::Image(Image::ExtKML).to_str());
93        assert_eq!("kmz", Extension::Image(Image::ExtKMZ).to_str());
94        assert_eq!("max", Extension::Image(Image::ExtMAX).to_str());
95        assert_eq!("png", Extension::Image(Image::ExtPNG).to_str());
96        assert_eq!("ps", Extension::Image(Image::ExtPS).to_str());
97        assert_eq!("psd", Extension::Image(Image::ExtPSD).to_str());
98        assert_eq!("svg", Extension::Image(Image::ExtSVG).to_str());
99        assert_eq!("tga", Extension::Image(Image::ExtTGA).to_str());
100        assert_eq!("thm", Extension::Image(Image::ExtTHM).to_str());
101        assert_eq!("tif", Extension::Image(Image::ExtTIF).to_str());
102        assert_eq!("tiff", Extension::Image(Image::ExtTIFF).to_str());
103        assert_eq!("webp", Extension::Image(Image::ExtWEBP).to_str());
104        assert_eq!("xcf", Extension::Image(Image::ExtXCF).to_str());
105        assert_eq!("yuv", Extension::Image(Image::ExtYUV).to_str());
106        assert_eq!("", Extension::Image(Image::None).to_str());
107    }
108}