学习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、示例:
领取专属 10元无门槛券
私享最新 技术干货