web_extensions/tabs/
status.rs1use super::prelude::*;
2use thiserror::Error;
3
4#[derive(Debug, PartialEq, Eq, Serialize, Deserialize)]
6pub enum Status {
7 #[serde(rename(serialize = "unloaded", deserialize = "unloaded"))]
8 Unloaded,
9 #[serde(rename(serialize = "loading", deserialize = "loading"))]
10 Loading,
11 #[serde(rename(serialize = "complete", deserialize = "complete"))]
12 Complete,
13}
14
15#[derive(Debug, Error)]
16#[error("Invalid status ('{0}'), expected 'unloaded', 'loading' or 'complete'")]
17pub struct InvalidStatusError(String);
18
19impl TryFrom<String> for Status {
20 type Error = InvalidStatusError;
21 fn try_from(s: String) -> Result<Self, Self::Error> {
22 match &*s {
23 "unloaded" => Ok(Status::Unloaded),
24 "loading" => Ok(Status::Loading),
25 "complete" => Ok(Status::Complete),
26 _ => Err(InvalidStatusError(s)),
27 }
28 }
29}