Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
int
Rust
提交
e5bd222c
R
Rust
项目概览
int
/
Rust
11 个月 前同步成功
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
Rust
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
e5bd222c
编写于
2月 25, 2022
作者:
M
Matthias Krüger
提交者:
GitHub
2月 25, 2022
浏览文件
操作
浏览文件
下载
差异文件
Rollup merge of #94184 - ssomers:btree_tests, r=Dylan-DPC
BTree: simplify test code Mostly, use `from` & `from_iter`.
上级
10070118
7950ebcd
变更
3
展开全部
隐藏空白更改
内联
并排
Showing
3 changed file
with
118 addition
and
138 deletion
+118
-138
library/alloc/src/collections/btree/map/tests.rs
library/alloc/src/collections/btree/map/tests.rs
+89
-108
library/alloc/src/collections/btree/set.rs
library/alloc/src/collections/btree/set.rs
+1
-1
library/alloc/src/collections/btree/set/tests.rs
library/alloc/src/collections/btree/set/tests.rs
+28
-29
未找到文件。
library/alloc/src/collections/btree/map/tests.rs
浏览文件 @
e5bd222c
此差异已折叠。
点击以展开。
library/alloc/src/collections/btree/set.rs
浏览文件 @
e5bd222c
...
...
@@ -1539,7 +1539,7 @@ fn next(&mut self) -> Option<&'a T> {
fn
size_hint
(
&
self
)
->
(
usize
,
Option
<
usize
>
)
{
let
(
a_len
,
b_len
)
=
self
.0
.lens
();
// No checked_add, because even if a and b refer to the same set,
// and T is a
n empty
type, the storage overhead of sets limits
// and T is a
zero-sized
type, the storage overhead of sets limits
// the number of elements to less than half the range of usize.
(
0
,
Some
(
a_len
+
b_len
))
}
...
...
library/alloc/src/collections/btree/set/tests.rs
浏览文件 @
e5bd222c
...
...
@@ -91,7 +91,7 @@ fn check_intersection(a: &[i32], b: &[i32], expected: &[i32]) {
return
;
}
let
large
=
(
0
..
100
)
.collect
::
<
Vec
<
_
>>
(
);
let
large
=
Vec
::
from_iter
(
0
..
100
);
check_intersection
(
&
[],
&
large
,
&
[]);
check_intersection
(
&
large
,
&
[],
&
[]);
check_intersection
(
&
[
-
1
],
&
large
,
&
[]);
...
...
@@ -107,8 +107,8 @@ fn check_intersection(a: &[i32], b: &[i32], expected: &[i32]) {
#[test]
fn
test_intersection_size_hint
()
{
let
x
:
BTreeSet
<
i32
>
=
[
3
,
4
]
.iter
()
.copied
()
.collect
(
);
let
y
:
BTreeSet
<
i32
>
=
[
1
,
2
,
3
]
.iter
()
.copied
()
.collect
(
);
let
x
=
BTreeSet
::
from
([
3
,
4
]
);
let
y
=
BTreeSet
::
from
([
1
,
2
,
3
]
);
let
mut
iter
=
x
.intersection
(
&
y
);
assert_eq!
(
iter
.size_hint
(),
(
1
,
Some
(
1
)));
assert_eq!
(
iter
.next
(),
Some
(
&
3
));
...
...
@@ -145,7 +145,7 @@ fn check_difference(a: &[i32], b: &[i32], expected: &[i32]) {
return
;
}
let
large
=
(
0
..
100
)
.collect
::
<
Vec
<
_
>>
(
);
let
large
=
Vec
::
from_iter
(
0
..
100
);
check_difference
(
&
[],
&
large
,
&
[]);
check_difference
(
&
[
-
1
],
&
large
,
&
[
-
1
]);
check_difference
(
&
[
0
],
&
large
,
&
[]);
...
...
@@ -159,43 +159,43 @@ fn check_difference(a: &[i32], b: &[i32], expected: &[i32]) {
#[test]
fn
test_difference_size_hint
()
{
let
s246
:
BTreeSet
<
i32
>
=
[
2
,
4
,
6
]
.iter
()
.copied
()
.collect
(
);
let
s23456
:
BTreeSet
<
i32
>
=
(
2
..=
6
)
.collect
(
);
let
s246
=
BTreeSet
::
from
([
2
,
4
,
6
]
);
let
s23456
=
BTreeSet
::
from_iter
(
2
..=
6
);
let
mut
iter
=
s246
.difference
(
&
s23456
);
assert_eq!
(
iter
.size_hint
(),
(
0
,
Some
(
3
)));
assert_eq!
(
iter
.next
(),
None
);
let
s12345
:
BTreeSet
<
i32
>
=
(
1
..=
5
)
.collect
(
);
let
s12345
=
BTreeSet
::
from_iter
(
1
..=
5
);
iter
=
s246
.difference
(
&
s12345
);
assert_eq!
(
iter
.size_hint
(),
(
0
,
Some
(
3
)));
assert_eq!
(
iter
.next
(),
Some
(
&
6
));
assert_eq!
(
iter
.size_hint
(),
(
0
,
Some
(
0
)));
assert_eq!
(
iter
.next
(),
None
);
let
s34567
:
BTreeSet
<
i32
>
=
(
3
..=
7
)
.collect
(
);
let
s34567
=
BTreeSet
::
from_iter
(
3
..=
7
);
iter
=
s246
.difference
(
&
s34567
);
assert_eq!
(
iter
.size_hint
(),
(
0
,
Some
(
3
)));
assert_eq!
(
iter
.next
(),
Some
(
&
2
));
assert_eq!
(
iter
.size_hint
(),
(
0
,
Some
(
2
)));
assert_eq!
(
iter
.next
(),
None
);
let
s1
:
BTreeSet
<
i32
>
=
(
-
9
..=
1
)
.collect
(
);
let
s1
=
BTreeSet
::
from_iter
(
-
9
..=
1
);
iter
=
s246
.difference
(
&
s1
);
assert_eq!
(
iter
.size_hint
(),
(
3
,
Some
(
3
)));
let
s2
:
BTreeSet
<
i32
>
=
(
-
9
..=
2
)
.collect
(
);
let
s2
=
BTreeSet
::
from_iter
(
-
9
..=
2
);
iter
=
s246
.difference
(
&
s2
);
assert_eq!
(
iter
.size_hint
(),
(
2
,
Some
(
2
)));
assert_eq!
(
iter
.next
(),
Some
(
&
4
));
assert_eq!
(
iter
.size_hint
(),
(
1
,
Some
(
1
)));
let
s23
:
BTreeSet
<
i32
>
=
(
2
..=
3
)
.collect
(
);
let
s23
=
BTreeSet
::
from
([
2
,
3
]
);
iter
=
s246
.difference
(
&
s23
);
assert_eq!
(
iter
.size_hint
(),
(
1
,
Some
(
3
)));
assert_eq!
(
iter
.next
(),
Some
(
&
4
));
assert_eq!
(
iter
.size_hint
(),
(
1
,
Some
(
1
)));
let
s4
:
BTreeSet
<
i32
>
=
(
4
..=
4
)
.collect
(
);
let
s4
=
BTreeSet
::
from
([
4
]
);
iter
=
s246
.difference
(
&
s4
);
assert_eq!
(
iter
.size_hint
(),
(
2
,
Some
(
3
)));
assert_eq!
(
iter
.next
(),
Some
(
&
2
));
...
...
@@ -204,19 +204,19 @@ fn test_difference_size_hint() {
assert_eq!
(
iter
.size_hint
(),
(
0
,
Some
(
0
)));
assert_eq!
(
iter
.next
(),
None
);
let
s56
:
BTreeSet
<
i32
>
=
(
5
..=
6
)
.collect
(
);
let
s56
=
BTreeSet
::
from
([
5
,
6
]
);
iter
=
s246
.difference
(
&
s56
);
assert_eq!
(
iter
.size_hint
(),
(
1
,
Some
(
3
)));
assert_eq!
(
iter
.next
(),
Some
(
&
2
));
assert_eq!
(
iter
.size_hint
(),
(
0
,
Some
(
2
)));
let
s6
:
BTreeSet
<
i32
>
=
(
6
..=
19
)
.collect
(
);
let
s6
=
BTreeSet
::
from_iter
(
6
..=
19
);
iter
=
s246
.difference
(
&
s6
);
assert_eq!
(
iter
.size_hint
(),
(
2
,
Some
(
2
)));
assert_eq!
(
iter
.next
(),
Some
(
&
2
));
assert_eq!
(
iter
.size_hint
(),
(
1
,
Some
(
1
)));
let
s7
:
BTreeSet
<
i32
>
=
(
7
..=
19
)
.collect
(
);
let
s7
=
BTreeSet
::
from_iter
(
7
..=
19
);
iter
=
s246
.difference
(
&
s7
);
assert_eq!
(
iter
.size_hint
(),
(
3
,
Some
(
3
)));
}
...
...
@@ -235,8 +235,8 @@ fn check_symmetric_difference(a: &[i32], b: &[i32], expected: &[i32]) {
#[test]
fn
test_symmetric_difference_size_hint
()
{
let
x
:
BTreeSet
<
i32
>
=
[
2
,
4
]
.iter
()
.copied
()
.collect
(
);
let
y
:
BTreeSet
<
i32
>
=
[
1
,
2
,
3
]
.iter
()
.copied
()
.collect
(
);
let
x
=
BTreeSet
::
from
([
2
,
4
]
);
let
y
=
BTreeSet
::
from
([
1
,
2
,
3
]
);
let
mut
iter
=
x
.symmetric_difference
(
&
y
);
assert_eq!
(
iter
.size_hint
(),
(
0
,
Some
(
5
)));
assert_eq!
(
iter
.next
(),
Some
(
&
1
));
...
...
@@ -263,8 +263,8 @@ fn check_union(a: &[i32], b: &[i32], expected: &[i32]) {
#[test]
fn
test_union_size_hint
()
{
let
x
:
BTreeSet
<
i32
>
=
[
2
,
4
]
.iter
()
.copied
()
.collect
(
);
let
y
:
BTreeSet
<
i32
>
=
[
1
,
2
,
3
]
.iter
()
.copied
()
.collect
(
);
let
x
=
BTreeSet
::
from
([
2
,
4
]
);
let
y
=
BTreeSet
::
from
([
1
,
2
,
3
]
);
let
mut
iter
=
x
.union
(
&
y
);
assert_eq!
(
iter
.size_hint
(),
(
3
,
Some
(
5
)));
assert_eq!
(
iter
.next
(),
Some
(
&
1
));
...
...
@@ -276,8 +276,8 @@ fn test_union_size_hint() {
#[test]
// Only tests the simple function definition with respect to intersection
fn
test_is_disjoint
()
{
let
one
=
[
1
]
.iter
()
.collect
::
<
BTreeSet
<
_
>>
(
);
let
two
=
[
2
]
.iter
()
.collect
::
<
BTreeSet
<
_
>>
(
);
let
one
=
BTreeSet
::
from
([
1
]
);
let
two
=
BTreeSet
::
from
([
2
]
);
assert
!
(
one
.is_disjoint
(
&
two
));
}
...
...
@@ -285,8 +285,8 @@ fn test_is_disjoint() {
// Also implicitly tests the trivial function definition of is_superset
fn
test_is_subset
()
{
fn
is_subset
(
a
:
&
[
i32
],
b
:
&
[
i32
])
->
bool
{
let
set_a
=
a
.iter
()
.collect
::
<
BTreeSet
<
_
>>
(
);
let
set_b
=
b
.iter
()
.collect
::
<
BTreeSet
<
_
>>
(
);
let
set_a
=
BTreeSet
::
from_iter
(
a
.iter
()
);
let
set_b
=
BTreeSet
::
from_iter
(
b
.iter
()
);
set_a
.is_subset
(
&
set_b
)
}
...
...
@@ -310,7 +310,7 @@ fn is_subset(a: &[i32], b: &[i32]) -> bool {
return
;
}
let
large
=
(
0
..
100
)
.collect
::
<
Vec
<
_
>>
(
);
let
large
=
Vec
::
from_iter
(
0
..
100
);
assert_eq!
(
is_subset
(
&
[],
&
large
),
true
);
assert_eq!
(
is_subset
(
&
large
,
&
[]),
false
);
assert_eq!
(
is_subset
(
&
[
-
1
],
&
large
),
false
);
...
...
@@ -321,8 +321,7 @@ fn is_subset(a: &[i32], b: &[i32]) -> bool {
#[test]
fn
test_retain
()
{
let
xs
=
[
1
,
2
,
3
,
4
,
5
,
6
];
let
mut
set
:
BTreeSet
<
i32
>
=
xs
.iter
()
.cloned
()
.collect
();
let
mut
set
=
BTreeSet
::
from
([
1
,
2
,
3
,
4
,
5
,
6
]);
set
.retain
(|
&
k
|
k
%
2
==
0
);
assert_eq!
(
set
.len
(),
3
);
assert
!
(
set
.contains
(
&
2
));
...
...
@@ -332,8 +331,8 @@ fn test_retain() {
#[test]
fn
test_drain_filter
()
{
let
mut
x
:
BTreeSet
<
_
>
=
[
1
]
.iter
()
.copied
()
.collect
(
);
let
mut
y
:
BTreeSet
<
_
>
=
[
1
]
.iter
()
.copied
()
.collect
(
);
let
mut
x
=
BTreeSet
::
from
([
1
]
);
let
mut
y
=
BTreeSet
::
from
([
1
]
);
x
.drain_filter
(|
_
|
true
);
y
.drain_filter
(|
_
|
false
);
...
...
@@ -417,7 +416,7 @@ fn test_zip() {
fn
test_from_iter
()
{
let
xs
=
[
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8
,
9
];
let
set
:
BTreeSet
<
_
>
=
xs
.iter
()
.cloned
()
.collect
(
);
let
set
=
BTreeSet
::
from_iter
(
xs
.iter
()
);
for
x
in
&
xs
{
assert
!
(
set
.contains
(
x
));
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录