use std::cell::RefCell;↵
↵
struct Logger {↵
messages: RefCell<Vec<String>>,↵
}↵
↵
impl Logger {↵
fn new() -> Self {↵
Logger {↵
messages: RefCell::new(Vec::new()),↵
}↵
}↵
↵
fn log(&self, msg: &str) {↵
self.messages.borrow_mut().push(String::from(msg));↵
}↵
↵
fn print_all(&self) {↵
for msg in self.messages.borrow().iter() {↵
println!("Log: {}", msg);↵
}↵
}↵
↵
fn count(&self) -> usize {↵
self.messages.borrow().len()↵
}↵
}↵
↵
fn main() {↵
let logger = Logger::new();↵
↵
logger.log("Starting application");↵
logger.log("Processing data");↵
logger.log("Done");↵
↵
println!("Total logs: {}", logger.count());↵
logger.print_all();↵
}