Trait in Rust
Trait in Rust
Rust中的Trait非常优美,类似于泛型编程概念。有时候造轮子的时候发现不同的类型具有相同的方法,如果一个个写方法显得不那么友好,比如
|
|
可以发现非常冗余,那么如何解决这种问题?可以使用Trait,先看Trait的定义
|
|
**首先是trait这个关键字,然后是大写的Double是一种类型,接下来是方法的定义,传入是一个自身的值,传出是一个类型。**来实现这个方法
|
|
可以看到,分别为每一个类型进行实现方法即可。
需求: 如果需要一个quadruple方法,
|
|
如果仅仅是对i32进行操作,是没有问题的,但是当对i64进行操作,就出现了问题,如果使用泛型
|
|
也会有问题,出现no method named `double` found for type `T` in the current scope
因此需要对T
进行类型标记
|
|
这样就不会用任何问题了。
- Inside the definition of the quadruple function, we’re allowed to assume that T has a double method
- When calling the quadruple function, we have a responsibility to make sure the type we’re using has an implementation of Double
如果一个变量有多种类型,那么可以按照下面的说法
|
|
Iter原则
- On a normal Vec, we get an iterator that moves the Vec and iterates over the actual values.
into_iter
- On a reference to a Vec, we borrow the Vec and iterate over references to the values inside it.
iter
- On a mutable reference, we mutably borrow the Vec and iterate over mutable references to the values inside it.
iter_mut
Generic Iterator Functions
|
|