sdp_rs/lines/
session_name.rs1pub use crate::tokenizers::value::Tokenizer;
6
7#[derive(Debug, PartialEq, Eq, Ord, PartialOrd, Clone)]
9pub struct SessionName(String);
10
11impl SessionName {
12 pub fn new(session_name: String) -> Self {
13 Self(session_name)
14 }
15
16 pub fn value(&self) -> &str {
17 &self.0
18 }
19}
20
21impl From<SessionName> for String {
22 fn from(session_name: SessionName) -> Self {
23 session_name.0
24 }
25}
26
27impl From<String> for SessionName {
28 fn from(session_name: String) -> Self {
29 Self(session_name)
30 }
31}
32
33impl<'a> From<Tokenizer<'a, 's'>> for SessionName {
34 fn from(tokenizer: Tokenizer<'a, 's'>) -> Self {
35 Self(tokenizer.value.into())
36 }
37}
38
39impl std::fmt::Display for SessionName {
40 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
41 write!(f, "s={}", self.value())
42 }
43}
44
45#[cfg(test)]
46mod tests {
47 use super::*;
48
49 #[test]
50 fn from_tokenizer1() {
51 let tokenizer: Tokenizer<'s'> = "a value".into();
52
53 assert_eq!(SessionName::from(tokenizer), SessionName("a value".into()));
54 }
55
56 #[test]
57 fn display1() {
58 let session_name = SessionName::new("A simple session".into());
59
60 assert_eq!(session_name.to_string(), "s=A simple session");
61 }
62}