Skip to content

Commit 0c9da2f

Browse files
committed
feat: [torrust#870] implement traits Dispaly and FromStr for TrackerMode
1 parent 74d8f79 commit 0c9da2f

File tree

1 file changed

+28
-0
lines changed

1 file changed

+28
-0
lines changed

packages/primitives/src/lib.rs

+28
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
//! by the tracker server crate, but also by other crates in the Torrust
66
//! ecosystem.
77
use std::collections::BTreeMap;
8+
use std::fmt;
9+
use std::str::FromStr;
810
use std::time::Duration;
911

1012
use info_hash::InfoHash;
@@ -92,6 +94,32 @@ impl Default for TrackerMode {
9294
}
9395
}
9496

97+
impl fmt::Display for TrackerMode {
98+
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
99+
let display_str = match self {
100+
TrackerMode::Public => "public",
101+
TrackerMode::Listed => "listed",
102+
TrackerMode::Private => "private",
103+
TrackerMode::PrivateListed => "private_listed",
104+
};
105+
write!(f, "{display_str}")
106+
}
107+
}
108+
109+
impl FromStr for TrackerMode {
110+
type Err = String;
111+
112+
fn from_str(s: &str) -> Result<Self, Self::Err> {
113+
match s.to_lowercase().as_str() {
114+
"public" => Ok(TrackerMode::Public),
115+
"listed" => Ok(TrackerMode::Listed),
116+
"private" => Ok(TrackerMode::Private),
117+
"private_listed" => Ok(TrackerMode::PrivateListed),
118+
_ => Err(format!("Unknown tracker mode: {s}")),
119+
}
120+
}
121+
}
122+
95123
impl TrackerMode {
96124
#[must_use]
97125
pub fn is_open(&self) -> bool {

0 commit comments

Comments
 (0)