shared/model_ui/screens_common/remote_multi_choice/
remote_resource_multi_choice.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
use crate::model_ui::screens_common::loading::UiLoadingResource;
use crate::model_ui::screens_common::remote_multi_choice::multi_choice::UiMultiChoice;
use crate::screens::input_fields_and_tags::RemoteResource;
use crate::screens_common::model::multi_choice::MultiChoice;
use serde::{Deserialize, Serialize};

#[derive(Serialize, Deserialize, Clone, Debug)]
pub enum UiRemoteResourceMultiChoice {
    Loading(UiLoadingResource),
    Loaded(UiMultiChoice),
    NonExistent,
}

impl<T> From<&RemoteResource<MultiChoice<T>>> for UiRemoteResourceMultiChoice
where
    T: Clone + std::fmt::Display,
{
    fn from(value: &RemoteResource<MultiChoice<T>>) -> Self {
        match value {
            RemoteResource::NotLoaded(inner) => UiRemoteResourceMultiChoice::Loading(inner.into()),
            RemoteResource::Loaded(inner) => UiRemoteResourceMultiChoice::Loaded(inner.into()),
            RemoteResource::NonExistent => UiRemoteResourceMultiChoice::NonExistent,
        }
    }
}