库 API 设计第一层
C 库 API 里,一个指针能表达很多事:
int parse_packet(const uint8_t *data, size_t len, struct Packet *out);
void normalize(uint8_t *data, size_t len);
void consume_buffer(uint8_t *data, size_t len);
uint8_t *make_packet(size_t *out_len);
这些签名看起来都和指针有关,但 API 语义完全不同:
- 只读输入
- 原地修改
- 输出结果
- 接管调用方资源
- 创建新资源并交给调用方
Rust 库 API 的第一层设计,就是把这些意图写进类型。
阅读更多