yazi/yazi-shared/src/layer.rs
2024-02-27 09:17:09 +08:00

49 lines
971 B
Rust

use std::{fmt::Display, str::FromStr};
use anyhow::bail;
#[derive(Debug, Default, PartialEq, Eq, Hash, Clone, Copy)]
pub enum Layer {
#[default]
App,
Manager,
Tasks,
Select,
Input,
Help,
Completion,
Which,
}
impl Display for Layer {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
f.write_str(match self {
Self::App => "app",
Self::Manager => "manager",
Self::Tasks => "tasks",
Self::Select => "select",
Self::Input => "input",
Self::Help => "help",
Self::Completion => "completion",
Self::Which => "which",
})
}
}
impl FromStr for Layer {
type Err = anyhow::Error;
fn from_str(s: &str) -> Result<Self, Self::Err> {
Ok(match s {
"app" => Self::App,
"manager" => Self::Manager,
"tasks" => Self::Tasks,
"select" => Self::Select,
"input" => Self::Input,
"help" => Self::Help,
"completion" => Self::Completion,
"which" => Self::Which,
_ => bail!("invalid layer: {s}"),
})
}
}