nmd_core/resource/
dynamic_resource.rs

1use 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}