bnr_xfs/capabilities/
default_rollback_position.rs1use std::fmt;
2
3use crate::{
4 impl_xfs_enum,
5 status::{CDR_POS_BOTTOM, CDR_POS_TOP},
6};
7
8#[repr(u32)]
10#[derive(Clone, Copy, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
11pub enum DefaultRollbackPosition {
12 Top = CDR_POS_TOP,
14 #[default]
16 Bottom = CDR_POS_BOTTOM,
17}
18
19impl DefaultRollbackPosition {
20 pub const fn new() -> Self {
22 Self::Bottom
23 }
24
25 pub const fn create(val: u32) -> Self {
27 match val {
28 CDR_POS_BOTTOM => Self::Bottom,
29 CDR_POS_TOP => Self::Top,
30 _ => Self::Bottom,
31 }
32 }
33}
34
35impl From<&DefaultRollbackPosition> for &'static str {
36 fn from(val: &DefaultRollbackPosition) -> Self {
37 match val {
38 DefaultRollbackPosition::Bottom => "bottom",
39 DefaultRollbackPosition::Top => "top",
40 }
41 }
42}
43
44impl From<DefaultRollbackPosition> for &'static str {
45 fn from(val: DefaultRollbackPosition) -> Self {
46 (&val).into()
47 }
48}
49
50impl fmt::Display for DefaultRollbackPosition {
51 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
52 write!(f, r#""{}""#, <&str>::from(self))
53 }
54}
55
56impl_xfs_enum!(DefaultRollbackPosition, "defaultRollbackPosition");