七叶笔记 » golang编程 » Rust编程语言里有接口interface么

Rust编程语言里有接口interface么

trait在rust语言里扮演抽象接口的角色,它的成员可以是常量,类型,非异步非常量函数。你可以选择实现函数,给常量初始化。

trait分为安全和非安全的。安全的trait有很多特性,比如:

一个trait的所有父trait必须是安全的,这很好理解,不过还没有深入到安全的本质。

Self: Sized一定不要用来约束trait,以免使成有固定大小空间可分配的。

不能在trait成员里使用三大成员类型的常量成员,因为它的空间大小也是编译时固定了。

成员函数必须是可分派的,需具有以下特点:

任何参数不能有Self类型。

一旦有Self类型第二个pig就不能通过编译, 如果把Self改成string,又不能通过编译,因为sized是不安全的。

上面的例子就是用Self做参数,这是安全对象pig不应该有的特点,因为它占用空间大小是已知的。

函数必须有&self参数,而方法不需要。

方法不带泛型参数,生命时间参数是可以的。

参数类型可以是引用的Self类型。

引用的Self类型也能够用于Box, Rc, Arc, Pin泛型但是Pin泛型不能是Self类型只能是引用Self,Box, Rc,Arc泛型。

你知道的Java,Python,C语言,golang语言有类似功能吗

好了下次再深入了解,欢迎关注。

相关文章