nmd_core/resource/
dynamic_resource.rs1use std::str::FromStr;
2
3use super::{disk_resource::DiskResource, image_resource::ImageResource, remote_resource::RemoteResource, ResourceError};
4
5
6pub enum DynamicResource {
7 DiskResource(DiskResource),
8 ImageResource(ImageResource),
9 RemoteResource(RemoteResource)
10}
11
12
13impl FromStr for DynamicResource {
14 type Err = ResourceError;
15
16 fn from_str(s: &str) -> Result<Self, Self::Err> {
17 let resource = ImageResource::from_str(s);
18
19 if resource.is_ok() {
20 return Ok(Self::ImageResource(resource.unwrap()))
21 }
22
23 let resource = DiskResource::from_str(s);
24
25 if resource.is_ok() {
26 return Ok(Self::DiskResource(resource.unwrap()))
27 }
28
29 let resource = RemoteResource::from_str(s);
30
31 if resource.is_ok() {
32 return Ok(Self::RemoteResource(resource.unwrap()))
33 }
34
35 Err(ResourceError::InvalidResource)
36 }
37}