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

学习Rust设计模式25-28

学习Rust设计模式25:倾向于较小的包

1、描述

倾向于选择能做好一件事的较小的包。

2、优势

一般来说,小的包更容易理解,模块化更好;

crates允许在项目之间重用代码;

Rust的编译单元是crate,分割成更多的crate可以使更多的代码被并行构建。

3、劣势

当一个项目同时依赖一个crate的多个冲突版本时,这可能导致“依赖地狱”;

crates.io上的软件包没有经过组织。一个crate可能写得很差,有无用的文档,或直接是恶意的。

两个小crate的优化程度可能低于一个大crate,因为编译器默认不执行链接时优化。

学习Rust设计模式26:把不安全因素放在较小的包中

1、描述

有unsafe的代码,放在一个尽量小的模块中。然后被嵌入到其它模块中时,其它模块就可以只包含安全的代码。

2、优势

限制必须被审计的不安全代码;

编写外部模块更容易。

3、劣势

写起来麻烦。

学习Rust设计模式27:FFI之基于对象的API

1、描述

当在Rust中设计暴露于其他语言的API时,有一些重要的设计原则与正常的Rust API设计相反:

所有的封装类型都应该被Rust拥有,由用户管理,并且不透明。

所有的事务性数据类型都应该由用户拥有,并且是透明的。

所有的库行为应该是作用于封装类型的函数。

所有的库行为都应该被封装成类型,且不是基于结构,而是基于出处/生命周期。

学习Rust设计模式28:FFI之类型合并

1、描述:

风险最低的API是“综合封装”,即与一个对象的所有可能的交互都被放入一个“封装器类型”中,保持着Rust API的整洁。

2、示例:

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

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券