extensions_rs/types/
mod.rs1pub mod image;
2
3use self::image::Image;
4use 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}