objects/object/state_status.rs
1// SPDX-License-Identifier: Apache-2.0
2//! Lifecycle status for states.
3
4use serde::{Deserialize, Serialize};
5
6/// Lifecycle status of a state.
7#[derive(Clone, Copy, Debug, PartialEq, Eq, Default, Serialize, Deserialize)]
8pub enum Status {
9 /// Draft state, freely rewritable.
10 #[default]
11 Draft,
12 /// Published state, history is frozen.
13 Published,
14}
15
16impl Status {
17 /// Convert to byte for serialization.
18 pub fn to_byte(&self) -> u8 {
19 match self {
20 Status::Draft => 0,
21 Status::Published => 1,
22 }
23 }
24
25 /// Parse from byte.
26 pub fn from_byte(b: u8) -> Option<Self> {
27 match b {
28 0 => Some(Status::Draft),
29 1 => Some(Status::Published),
30 _ => None,
31 }
32 }
33}