Rust编程:特性、面向对象与JSON转换
1. Rust与C结构体声明的差异
在Rust和C语言中,结构体声明存在一处差异。在C语言里,结构体声明需以分号结尾,就像其他语句一样。但在Rust中,结构体声明并非需要以分号结尾的语句,所以可以省略分号。
2. 特性(Traits)与实现(Implementations)
2.1 特性的概念
在Rust中,特性是为结构体添加功能的一种方式。特性类似于C++中的接口,是一种抽象技术。定义特性时,只需关注函数的调用方式,而无需考虑具体实现,具体实现会单独处理。
以下是一个特性的示例:
pub trait Encodable {
fn encode<S: Encoder>(&self, s: &mut S) -> Result<(), S::Error>;
}
这个 Encodable 特性定义了一个名为 encode 的函数,它是一个泛型函数,因为未指定具体类型,类型作为参数传递给函数,可用于任何数据类型,实现了代码复用,这就是多态性。
2.2 函数重载与泛型函数
为不同数据类型创建函数实现的过程称为重载。例如,在Rust中对 double 函数进行重载:
fn double(x: u8) -> u8 {
超级会员免费看
订阅专栏 解锁全文
274

被折叠的 条评论
为什么被折叠?



