Skip to main content

visionkit/
support.rs

1use serde::{Deserialize, Serialize};
2
3use crate::error::VisionKitError;
4
5#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
6#[serde(rename_all = "camelCase")]
7pub struct AreaSupportInfo {
8    pub area: String,
9    pub current_platform: String,
10    pub available_on_current_platform: bool,
11    pub availability: String,
12    pub reason: Option<String>,
13    pub members: Vec<String>,
14    #[serde(default)]
15    pub notes: Vec<String>,
16}
17
18impl AreaSupportInfo {
19    #[must_use]
20    pub fn unavailable_error(&self) -> VisionKitError {
21        VisionKitError::UnavailableOnThisPlatform(self.reason.clone().unwrap_or_else(|| {
22            let area = &self.area;
23            let current_platform = &self.current_platform;
24            format!("{area} is unavailable on {current_platform}")
25        }))
26    }
27}