bean_script/
logger.rs

1use std::collections::VecDeque;
2
3pub enum Logger {
4	Stdout,
5	Backlog { backlog: VecDeque<String> },
6	Callback { log: fn(String) },
7}
8
9impl Logger {
10	pub fn log(&mut self, msg: String) {
11		match self {
12			Logger::Stdout => println!("{}", msg),
13			Logger::Backlog { backlog } => backlog.push_back(msg),
14			Logger::Callback { log } => log(msg),
15		}
16	}
17}
18
19impl Iterator for Logger {
20	type Item = String;
21
22	fn next(&mut self) -> Option<Self::Item> {
23		match self {
24			Logger::Backlog { backlog } => backlog.pop_front(),
25			_ => None,
26		}
27	}
28}