内容简介:这些天主要学习 golang 和 typescript,所以接触很多有关接下来定义要实现特征的类别,我们需要对 Article 进行一个概要summerize的方法。定义 Article 结构,定义
rust_logo.jpg
这些天主要学习 golang 和 typescript,所以接触很多有关 接口 的概念,也加深了我对 接口 的理解。今天我们看一看在 Rust 中是如何定义接口和如何实现接口。接口可以提供对行为抽象,让不同类型共享相同的抽象行为。不过在 Rust 这里是用关键字 trait 而不是 interface 来定义接口,不知道接口在 Rust 中使用和应用和其他语言还有什么不同,而是仅仅就是名字不同。
trait 定义
pub trait Summary {
fn summarize(&self) -> String;
}
接下来定义要实现特征的类别,我们需要对 Article 进行一个概要summerize的方法。
pub struct Article {
pub title: String,
pub author: String,
pub content: String,
}
定义 Article 结构,定义 title , author 和 content 三个属性。
Article 实现 Summary 的特征
我们这里暂且叫特征,毕竟是 Rust 的地盘吗?我们就用特征来代替接口
impl Summary for Article {
// add code here
fn summarize(&self) -> String {
format!("{} by {}:{}",self.title,self.author,self.content)
}
}
fn main(){
let angular_article = Article{
title:String::from("angular startup"),
author:String::from("zidea"),
content:String::from("angular startup content"),
};
println!("{}",angular_article.summarize());
}
这里调试时候,遇到两个问题可以供初学者参考,首先我是一个有 java 背景的 developer 习惯了 angularArticle ,而在 Rust 地盘我们用 angular_article ,还有一个就是在 Rust 函数中会默认返回最后一行,最后一行作为返回不用 ; 。
特征的默认行为
可对接口进行定义默认行为,当实现 Summary 特征而没有复写其方法时候,调用该接口实现的方法就会执行默认方法。
pub trait Summary {
fn summarize(&self) -> String{
String::from("Read more ...")
}
}
impl Summary for Article{}
特征可以作为参数使用
pub fn notify(item:impl Summary){
println!("{}",item.summarize());
}
let angular_comment = Comment{
author:String::from("tina"),
comment:String::from("good comment!"),
};
// println!("{}",angular_article.summarize());
// println!("{}",angular_comment.summarize());
notify(angular_article);
notify(angular_comment);
pub fn notify<T:Summary>(item:T){
println!("{}",item.summarize());
}
rust-logo-640x215.png
以上所述就是小编给大家介绍的《Rust 从基础到实践(9) 特征(上)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
The Filter Bubble
Eli Pariser / Penguin Press / 2011-5-12 / GBP 16.45
In December 2009, Google began customizing its search results for each user. Instead of giving you the most broadly popular result, Google now tries to predict what you are most likely to click on. Ac......一起来看看 《The Filter Bubble》 这本书的介绍吧!