1use std::fmt;
2
3pub trait MarkerType: Send + Sync + 'static {
19 fn label() -> &'static str;
21}
22
23#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
25pub struct ShellArg;
26
27impl MarkerType for ShellArg {
28 fn label() -> &'static str {
29 "shell_arg"
30 }
31}
32
33impl fmt::Display for ShellArg {
34 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
35 write!(f, "ShellArg")
36 }
37}
38
39#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
41pub struct FilePath;
42
43impl MarkerType for FilePath {
44 fn label() -> &'static str {
45 "file_path"
46 }
47}
48
49impl fmt::Display for FilePath {
50 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
51 write!(f, "FilePath")
52 }
53}