Rust Lang Book Ch.19 Placeholder type, Default generic type parameter, operator overloading
Placeholder Types
在trait定义中,可以使用Associated types在定义中放一些type placeholder,并用这些type placeholder作为返回值,参数等描述类型之间的关系。接着,trait的实现中就可以将这些type placehold设置为具体类型。
定义:
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> {
它与直接全部使用泛型的实现不同的是,使用type placeholder只能定义一种,泛型却可以根据type parameters得到多种实现。
pub trait Iterator<T> {
fn next(&mut self) -> Option<T>;
}
Default Generic Type Parameters
基本语法 type <PlaceholderType>=<ConcreteType>;
impl Iterator for Counter {
type Item = u32;
fn next(&mut self) -> Option<Self::Item> {
重载操作符
可以重载std::ops中的操作符
use std::ops::Add;
#[derive(Debug, PartialEq)]
struct Point {
x: i32,
y: i32,
}
impl Add for Point {
type Output = Point;
fn add(self, other: Point) -> Point {
Point {
x: self.x + other.x,
y: self.y + other.y,
}
}
}

浙公网安备 33010602011771号