Open hhstore opened 2 years ago
Rust 语言特性与其他语言对比:
比较分析法
:读写
权限, 非常聪明的设计.精巧
的在静态语言, 实现了 go interface
的效果, 且易用性
不输 go interface.
err!=nil
, 聪明太多.
一行流
, 能写更短的代码. (短 ≠ 易读)带 ;
(语句) 和 不带 ;
( 表达式 = 隐含 return xxx).
惊讶
的设计规则.!, @, ', ., ::, =>, ->, ?, :, |, _, | |, (), <>, [], {}, .., {:?}, $, &, *, ;, #[], //,
__init__.py
. 用于模块导出.注意:
Why Python?
Why Golang?
Why C++?
Why Haskell?
Rust | Python | Golang | C++ | Haskell | 备注 |
---|---|---|---|---|---|
基础数据类型 | xxxxxxxxxxxxxxxxxx | xxxxxxxxxx | xxxxxxxxxx | xxxxxxxxxx | xxxxxxxxxx |
struct | 对应 class | go 类似, 用作类型设计<数据+行为> | xxxxxxxxxx | xxxxxxxxxx | rust 的 struct, 设计和使用方式上和 go 非常像 |
trait + impl | 抽象类 | ≈ interface 接口类型. 区别是 trait 可以含默认接口实现 | xxxxxxxxxx | xxxxxxxxxx | rust 是显示声明 impl 实现一个 trait, go 是隐式实现. |
泛型 | 动态语言, 鸭子类型, 无需 | go1.8 添加支持 | xxxxxxxxxx | xxxxxxxxxx | rust 的泛型设计, 非常简洁 |
宏 | xxxxxxxxxxxxxxxxxx | go 的代码生成器(generate) | xxxxxxxxxx | xxxxxxxxxx | xxxxxxxxxx |
类型标注 | xxxxxxxxxxxxxxxxxx | xxxxxxxxxx | xxxxxxxxxx | xxxxxxxxxx | xxxxxxxxxx |
模块(mod.rs) | 类 __init__.py 文件 |
无, 默认一个文件夹, 为一个 module | xxxxxxxxxx | xxxxxxxxxx | rust 这个 模块设计, 接近 Python, 范围控制颗粒度更细 |
模块作用域范围 | 文件内 | 文件夹内(共享作用域/隐式可见) | xxxxxxxxxx | xxxxxxxxxx | rust 使用 mod 关键字控制, 默认是文件内可见, 通过 mod 显式导入 |
内存所有权(ownership) | 无明确概念 | xxxxxxxxxx | xxxxxxxxxx | xxxxxxxxxx | 类似 c/c++ 内存概念 |
变量生命周期 | xxxxxxxxxxxxxxxxxx | xxxxxxxxxx | xxxxxxxxxx | xxxxxxxxxx | xxxxxxxxxx |
变量类型标注 | 类似 type hint, 区别: 约束 vs 编译器 check | 无 | xxxxxxxxxx | xxxxxxxxxx | xxxxxxxxxx |
move vs copy 语义 | 无需关注 | 引用类型 vs 值类型 | xxxxxxxxxx | xxxxxxxxxx | 复制 vs 引用, 基本同 c/c++ 的指针概念 |
单元测试 | 测试方法以 test 为前缀 | xxxxxxxxxx | xxxxxxxxxx | xxxxxxxxxx | #[cfg(test)] #[test] 标注测试方法 |
集成测试 | pytest, unittest 包 | _test.go 后缀 | xxxxxxxxxx | xxxxxxxxxx | rust 隐含 tests 文件夹, 是集成测试专用 |
cargo | pip 包管理工具 | go mod 包管理工具 | xxxxxxxxxx | xxxxxxxxxx | rust 包管理工具 |
cargo bin | __main__ 隐式入口 |
main() 函数入口 | xxxxxxxxxx | xxxxxxxxxx | cargo bin 是二进制类型项目 |
cargo lib | python 常规的 lib 项目就是, 无特别约束 | xxxxxxxxxx | xxxxxxxxxx | xxxxxxxxxx | cargo lib 是库类型项目 |
https://crates.io/ | https://pypi.org/ 包托管平台 | 无, 依赖 github.com 实现包获取 | xxxxxxxxxx | xxxxxxxxxx | rust 官方包托管平台, 自带 docs 托管 |
https://docs.rs/ | 无, 项目方自行维护 | 无, 项目方自行维护 | xxxxxxxxxx | xxxxxxxxxx | rust 文档托管平台 |
xxxxxxxxxx | xxxxxxxxxxxxxxxxxx | xxxxxxxxxx | xxxxxxxxxx | xxxxxxxxxx | xxxxxxxxxx |
xxxxxxxxxx | xxxxxxxxxxxxxxxxxx | xxxxxxxxxx | xxxxxxxxxx | xxxxxxxxxx | xxxxxxxxxx |
xxxxxxxxxx | xxxxxxxxxxxxxxxxxx | xxxxxxxxxx | xxxxxxxxxx | xxxxxxxxxx | xxxxxxxxxx |
xxxxxxxxxx | xxxxxxxxxxxxxxxxxx | xxxxxxxxxx | xxxxxxxxxx | xxxxxxxxxx | xxxxxxxxxx |
xxxxxxxxxx | xxxxxxxxxxxxxxxxxx | xxxxxxxxxx | xxxxxxxxxx | xxxxxxxxxx | xxxxxxxxxx |
xxxxxxxxxx | xxxxxxxxxxxxxxxxxx | xxxxxxxxxx | xxxxxxxxxx | xxxxxxxxxx | xxxxxxxxxx |
1
1
1
related: