pub trait Summary { fn summarize (&self) -> String; } pub struct NewsArticle { pub author: String, pub headline: String, pub location: String, pub content: String, } impl Summary for NewsArticle { fn summarize(&self) -> String { // return String ownership. &self means self: &Self format!("{} by {} ({})", self.headline, self.author, self.location) } } pub struct Tweet { pub username: String, pub content: String, pub retweet: bool, pub reply: bool, } impl Summary for Tweet { fn summarize(&self) -> String { // &Self is the type owns impl format!("{}: {}",self.username, self.content) } }