首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

学习Rust设计模式3-5

Rust设计模式学习笔记第3节-第5节。

学习Rust设计模式3:构造器和默认构造器

1、通常做法

Rust中,通常使用一个关联函数new来创建一个对象,通过Default trait来支持默认构造器。

2、示例

直接看下面代码:

在上面的例子中,我们为Person显式的实现了Default trait。其实对于复合类型来说,如果每个成员都实现了Default Trait,则我们可以直接使用#[derive(Default)]来实现Default,而不必显式的实现。我们可以直接在Person结构体上加上该宏来实现,如下:

学习Rust设计模式4:把集合当成智能指针

1、通常做法

通过为集合实现Deref trait,提供其拥有和借用的数据视图。

2、示例

考虑Vec,Vec是一个拥有T的集合,然后通过实现Deref完成&Vec到&[T]的隐式解引用,从而提供借用T的集合(即&[T])。

如下代码:

原因:Vec提供拥有T的集合,&[T]提供借用T的集合。大部分情况下,只需要借用视图,提供两种方式,让用户在使用时在借用和拥有之间做出选择。

学习Rust设计模式5:在析构器中做最终处理

1、通常做法:

Rust中,通常在析构函数中运行退出前必须运行的代码。

2、示例:

3、需要注意的问题:

如果函数中存在无线循环或者运行函数退出前崩溃,则不会运行drop函数。示例如下:

上述代码运行如下:

可以看到panic发生后,A的drop函数没有运行。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20230226A03MTS00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券