关联类型:是trait中的占位符。在内部约定一个特别的类型,和泛型似类(泛型是外部约定)
泛型参数:是指参数中,实现trait的对象类型是一个泛型类;即不特定的一类
默认参数:是指参数中,有实现trait的对象类型就是某一个特殊的类;即特定的一类
上代码:
#[derive(Debug)]
pub enum RunStrategy{
AAAA,
BBBB,
CCCC,
}
pub trait Strategy< T= RunStrategy> { //这个trait是针对带这个枚举类型的输入参数
type Output; // 内部约定一个类型
fn poll(&self) -> (Self::Output, T);
}
#[derive(Debug)]
pub struct Strategy_aaaa{
code :String,
}
impl Strategy_aaaa{
pub fn default()-> Self{
Strategy_aaaa{code:"600036".to_string()}
}
}
impl Strategy for Strategy_aaaa{
type Output = Strategy_aaaa;
fn poll(&self) -> (Self::Output, RunStrategy){
let aaaa= Strategy_aaaa::default();
let rs = RunStrategy::AAAA;
println!("poll => aaaa:{:?} , rs:{:?}",aaaa,rs);
(aaaa,rs)
}
}
fn main(){
println!("hello!");
let aaaa = Strategy_aaaa::default();
aaaa.poll();
}
来源:oschina
链接:https://my.oschina.net/u/4310950/blog/4560136