Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 8 additions & 10 deletions src/safe-guides/coding_practice/collections.md
Original file line number Diff line number Diff line change
Expand Up @@ -56,13 +56,17 @@ Rust 标准库内置的集合类型,在安全和性能方面还是比较靠谱



## G.CLT.01 非必要情况下,不要使用 `LinkedList`,而用 `Vec`或`VecDeque` 代替
## G.CLT.01 非必要情况下,不要使用`LinkedList`,而用`Vec`或`VecDeque`代替

### 【级别:建议】
**【级别】** 建议

建议按此规范执行。
**【描述】**

一般情况下,有 `Vec`和`VecDeque` 性能更好。`LinkedList` 存在内存浪费,缓存局部性(Cache Locality)比较差,无法更好地利用CPU 缓存机制,性能很差。

只有在有大量的 列表 拆分 和 合并 操作时,才真正需要链表,因为链表允许你只需操作指针而非复制数据来完成这些操作。

### 【Lint 检测】
**【Lint 检测】**

| lint name | Clippy 可检测 | Rustc 可检测 | Lint Group | level |
| ------------------------------------------------------------ | ------------- | ------------ | ---------- | ----- |
Expand All @@ -75,11 +79,5 @@ Rust 标准库内置的集合类型,在安全和性能方面还是比较靠谱
avoid-breaking-exported-api=true
```

### 【描述】

一般情况下,有 `Vec`和`VecDeque` 性能更好。`LinkedList` 存在内存浪费,缓存局部性(Cache Locality)比较差,无法更好地利用CPU 缓存机制,性能很差。

只有在有大量的 列表 拆分 和 合并 操作时,才真正需要链表,因为链表允许你只需操作指针而非复制数据来完成这些操作。



Loading