Skip to content

Commit a02b03e

Browse files
统一文档
1 parent 1a3b5c7 commit a02b03e

File tree

3 files changed

+115
-74
lines changed

3 files changed

+115
-74
lines changed

README-CN.md

+42-17
Original file line numberDiff line numberDiff line change
@@ -8,39 +8,47 @@
88
本库为Rust标准库中的所有集合类型提供宏,以及基于引用的迭代器
99

1010
---
11-
简单示例
1211

12+
简单示例
1313
```rust
14+
use better_comprehension::vector;
1415
let vec_1 = vec!["AB".to_string(), "CD".to_string()];
15-
1616
let vec: Vec<String> = vector![x.clone() for x in vec_1];
1717
assert_eq!(vec, vec!["AB".to_string(), "CD".to_string()]);
1818
```
19-
2019
---
20+
2121
你也可以在推导式中使用模式
2222
```rust
23+
use better_comprehension::vec_deque;
24+
use std::collections::VecDeque;
2325
struct Person {
2426
name: String,
2527
age: i32,
2628
}
2729
let people = [Person { name: "Joe".to_string(), age: 20 },
2830
Person { name: "Bob".to_string(), age: 25 }];
29-
30-
let vec_deque = vec_deque![name.clone() for Person { name, .. } in people];
31-
assert_eq!(vec_deque, VecDeque::from(["Joe".to_string(), "Bob".to_string()]));
31+
let vec_deque = vec_deque![ name.clone()
32+
for Person { name, ..} in people];
33+
assert_eq!(vec_deque,
34+
VecDeque::from(["Joe".to_string(),
35+
"Bob".to_string()]));
3236
```
3337
---
3438

3539
过滤集合中的值
3640
```rust
41+
use better_comprehension::linked_list;
42+
use std::collections::LinkedList;
3743
let linked_list = linked_list![ i*2 for i in 1..=3 if i != 2 ];
3844
assert_eq!(linked_list, LinkedList::from([2, 6]));
3945
```
4046
---
4147

4248
根据条件返回不同的值
4349
```rust
50+
use better_comprehension::b_tree_set;
51+
use std::collections::BTreeSet;
4452
let b_tree_set = b_tree_set!{
4553
i if i-1 == 0 else i+10
4654
for i in 1..=3 if i != 2
@@ -49,8 +57,11 @@ assert_eq!(b_tree_set, BTreeSet::from([1, 13]));
4957
```
5058

5159
---
60+
5261
嵌套推导式
5362
```rust
63+
use better_comprehension::binary_heap;
64+
use std::collections::BinaryHeap;
5465
let binary_heap = binary_heap![
5566
i if (i-1 == 0 || j -2 == 0) else i+10
5667
for i in 1..=3 if i != 2
@@ -61,6 +72,7 @@ assert_eq!(binary_heap.into_sorted_vec(), vec![1, 1, 3, 13]);
6172

6273
和python的推导式一样, 本库的for循环是从上到下读取的.
6374
```rust
75+
use better_comprehension::vector;
6476
let vec = vector![
6577
(top,bottom)
6678
for top in 1..=3 if top != 2
@@ -73,6 +85,7 @@ assert_eq!(vec, vec![(1, 4), (1, 5), (1, 6),
7385

7486
所以通常来说, 对于多层循环, 如果你希望原容器被消耗, 你应该写成如下这样:
7587
```rust
88+
use better_comprehension::vector;
7689
let vec_1 = vec!["ABC".to_string(), "DEF".to_string()];
7790
let vec_2 = vec!["abc".to_string(), "def".to_string()];
7891
let vec_3 = vec![123, 456];
@@ -111,6 +124,7 @@ println!("{:?}", vec_2); // work well
111124
你唯一需要做的就是在你想要保留所有权的变量后面`加上.iter()``使用 &`,
112125
其余会在宏内自动处理.
113126
```rust
127+
use better_comprehension::vector;
114128
let vec_1 = vec!["ABC".to_string(), "DEF".to_string()];
115129
let vec_2 = vec!["abc".to_string(), "def".to_string()];
116130
let vec_3 = vec![123, 456];
@@ -130,6 +144,8 @@ println!("{:?}", vec_2); // work well
130144
同时, 该库还支持键值对容器类型, HashMap, BTreeMap
131145

132146
```rust
147+
use better_comprehension::hash_map;
148+
use std::collections::HashMap;
133149
let vec_key = vec!["key_1".to_string(),
134150
"key_2".to_string(),
135151
"key_3".to_string()];
@@ -144,9 +160,9 @@ let hash_map = hash_map!{
144160
assert_eq!(
145161
hash_map,
146162
HashMap::from([
147-
("key_1".to_string(), 3),
148-
("key_2".to_string(), 3),
149-
("key_3".to_string(), 3)
163+
("key_1".to_string(), 3),
164+
("key_2".to_string(), 3),
165+
("key_3".to_string(), 3)
150166
])
151167
);
152168
```
@@ -163,6 +179,7 @@ assert_eq!(
163179
* 范围表达式(如: 1..=3)
164180

165181
```rust
182+
use better_comprehension::iterator_ref;
166183
let vec_1 = ["123".to_string(),
167184
"456".to_string(),
168185
"789".to_string()];
@@ -171,10 +188,10 @@ let vec_2 = ["ABC".to_string(),
171188
"GHI".to_string()];
172189

173190
let mut result3 = iterator_ref![
174-
(x.clone(), y.clone()) if x.contains("1") else (y.clone(), x.clone())
175-
for x in vec_1 if x.contains("1") || x.contains("7")
176-
for i in 1..=2
177-
for y in vec_2 if y.contains("D") || x.contains("3")];
191+
(x.clone(), y.clone()) if x.contains("1") else (y.clone(), x.clone())
192+
for x in vec_1 if x.contains("1") || x.contains("7")
193+
for i in 1..=2
194+
for y in vec_2 if y.contains("D") || x.contains("3")];
178195

179196
// still alive
180197
println!("{:?}", vec_1);
@@ -255,6 +272,8 @@ b_tree_set! : insert() 添加元素
255272
# 一些实际的例子
256273

257274
```rust
275+
use better_comprehension::vector;
276+
use std::collections::{HashMap, BTreeMap};
258277
// 创建3x3矩阵
259278
let matrix = vector![
260279
vector![i * 3 + j + 1 for j in 0..3]
@@ -268,15 +287,21 @@ vector![row[i]
268287
for i in 0..3
269288
];
270289
// matrix is alive
271-
assert_eq!(matrix, vec![vec![1, 2, 3], vec![4, 5, 6], vec![7, 8, 9]]);
290+
assert_eq!(matrix, vec![vec![1, 2, 3],
291+
vec![4, 5, 6],
292+
vec![7, 8, 9]]);
272293
assert_eq!(
273294
transposed,
274-
vec![vec![1, 4, 7], vec![2, 5, 8], vec![3, 6, 9]]
295+
vec![vec![1, 4, 7],
296+
vec![2, 5, 8],
297+
vec![3, 6, 9]]
275298
);
276299
```
277300

278301

279302
```rust
303+
use better_comprehension::{hash_map, b_tree_map, vector};
304+
use std::collections::{HashMap, BTreeMap};
280305
#[derive(Debug, PartialEq, Eq)]
281306
struct Score {
282307
subject: &'static str,
@@ -342,8 +367,8 @@ let math_scores: HashMap<&String, u8> = hash_map![
342367

343368
assert_eq!(
344369
math_scores,
345-
HashMap::from([(&"Alice".to_string(), 95), (&"Bob".to_string(), 78)])
346-
);
370+
HashMap::from([(&"Alice".to_string(), 95),
371+
(&"Bob".to_string(), 78)]));
347372

348373
// use for loop
349374
let high_scores = {

0 commit comments

Comments
 (0)