trait
2022/2/17 22:23:00
trait Summary {
fn summarize(&self) -> String {
String::from("(Read more...)")
}
}
struct NewsArticle {
pub headline: String,
pub location: String,
pub author: String,
pub content: String,
}
impl Summary for NewsArticle {}
fn main() {
let news_article = NewsArticle{
headline: String::from("Headline"),
location: String::from("somewhere"),
author: String::from("somebody"),
content: String::from("something")
};
println!("{}", news_article.summarize());
}
https://doc.rust-jp.rs/book-ja/ch10-02-traits.html#デフォルト実装
trait Summary {
fn summarize(&self) -> String;
}
struct NewsArticle {
pub headline: String,
pub location: String,
pub author: String,
pub content: String,
}
impl Summary for NewsArticle {
fn summarize(&self) -> String {
format!("{}, by {} ({})", self.headline, self.author, self.location)
}
}
fn main() {
let news_article = NewsArticle{
headline: String::from("Headline"),
location: String::from("somewhere"),
author: String::from("somebody"),
content: String::from("something")
};
println!("{}", news_article.summarize());
}
https://doc.rust-jp.rs/book-ja/ch10-02-traits.html#トレイトを型に実装する
pub trait Summary {
fn summarize(&self) -> String;
}
https://doc.rust-jp.rs/book-ja/ch10-02-traits.html#トレイトを定義する