use std::fmt::Display;
use std::fmt::Debug;
use evan_toy::Summary;
use evan_toy::Tweet;
use evan_toy::NewsArticle;
fn main(){
trait_fn();
}
fn trait_fn(){
let mut tw = Tweet{
username:String::from("Tom"),
content:String::from("hahahaha"),
reply:false,
retweet:false
};
let mut news = NewsArticle{
headline:String::from("DDD"),
author:String::from("Tom"),
location:String::from("aaa"),
};
print1(tw);
print1(news);
}
fn print1(item: impl Summary){
println!("{}",item.summarize());
}
fn print2<T:Summary>(item: T){
println!("{}",item.summarize());
}
fn print3<T:Summary+Display>(item: T){
println!("{}",item.summarize());
}
fn print4<T,U>(i1: T,i2:U) -> String
where
T:Summary+Display,
U:Clone + Debug,
{
String::from("cccc")
}