I’ve been looking at Rust recently and I wrote a small Rust program that uses traits, a concept very similar to interfaces in other languages. There’s a lot to learn but this seems reasonable.
struct Message { id: i32, text: String,}
trait Printer { fn print(&self, value: &str);}
struct ConsolePrinter {}
impl Printer for ConsolePrinter { fn print(&self, value: &str) { println!("{}", value); }}
fn main() { let messages = vec![ Message { id: 1, text: String::from("Hello world"), }, Message { id: 2, text: String::from("How are you?"), }, Message { id: 3, text: String::from("Goodbye"), }, ];
let printer = ConsolePrinter {};
for message in &messages { printer.print(&message.text) }}