< 返回版块

wangjohnny 发表于 2021-11-02 17:47

Tags:trait,type,alias

rust新手, 我知道trait中的常见关联类型语法如下:

pub trait Iterator {
    type Item;

    fn next(&mut self) -> Option<Self::Item>;
}
impl Iterator for Counter {
    type Item = u32;

    fn next(&mut self) -> Option<Self::Item> {
        // 省略
    }
}

但是我最近在看一些subtrate源码,看到一些代码:

pub trait Config {
    type ReservationFee: Get<BalanceOf<Self>>;
}

parameter_types! {
    pub const NickReservationFee: u128 = 100;
}

impl pallet_balances::Config for Runtime {
    type ReservationFee = NickReservationFee;
}

找了一些教程,没找到哪本书里解释别名名称冒号后面的类型是用来干嘛的? 看了官方的The Rust Reference的Type aliases,里面有type语法格式:

type IDENTIFIER GenericParams? ( : TypeParamBounds )? WhereClause? ( = Type )? ;

TypeParamBounds就是我想了解的内容,可惜这里也没说清楚这个语法。 只有最后有一句: A type alias with TypeParamBounds may only specified when used as an associated type in a trait. 请哪位朋友帮忙解释一下这个冒号后面的内容? 谢谢


Ext Link: https://doc.rust-lang.org/reference/items/type-aliases.html

评论区

写评论
xin-water 2021-11-04 12:58

trait继承,在trait的基础知识里有的。相当于了java接口继承。

Aya0wind 2021-11-02 18:29

这很好理解啊,就跟普通的traitbound一样,只不过约束的是关联类型而已,实现这个trait时,这个关联类型要求满足冒号后面的的trait

1 共 2 条评论, 1 页