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