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());

Required Associated Types§

Required Methods§

source

fn drain_messages(&mut self) -> Vec<Message>

source

fn add_message(&mut self, _: Message) -> Result<(), Self::Error>

Implementors§