Trait mailpot_web::utils::SessionMessages
source · pub trait SessionMessages {
type Error;
// Required methods
fn drain_messages(&mut self) -> Vec<Message>;
fn add_message(&mut self, _: Message) -> Result<(), Self::Error>;
}
Expand description
Drain messages from session.
Example
struct Session(Vec<Message>);
impl SessionMessages for Session {
type Error = std::convert::Infallible;
fn drain_messages(&mut self) -> Vec<Message> {
std::mem::take(&mut self.0)
}
fn add_message(&mut self, m: Message) -> Result<(), std::convert::Infallible> {
self.0.push(m);
Ok(())
}
}
let mut s = Session(vec![]);
s.add_message(Message {
message: "foo".into(),
level: Level::default(),
})
.unwrap();
s.add_message(Message {
message: "bar".into(),
level: Level::Error,
})
.unwrap();
assert_eq!(
s.drain_messages().as_slice(),
[
Message {
message: "foo".into(),
level: Level::default(),
},
Message {
message: "bar".into(),
level: Level::Error
}
]
.as_slice()
);
assert!(s.0.is_empty());