Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
int
Rust
提交
5b6ddd50
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,发现更多精彩内容 >>
提交
5b6ddd50
编写于
3月 10, 2021
作者:
O
Oli Scherer
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Convert a closure into a method
上级
40334da7
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
14 addition
and
12 deletion
+14
-12
compiler/rustc_mir_build/src/thir/pattern/const_to_pat.rs
compiler/rustc_mir_build/src/thir/pattern/const_to_pat.rs
+14
-12
未找到文件。
compiler/rustc_mir_build/src/thir/pattern/const_to_pat.rs
浏览文件 @
5b6ddd50
...
...
@@ -246,6 +246,18 @@ fn type_may_have_partial_eq_impl(&self, ty: Ty<'tcx>) -> bool {
})
}
fn
field_pats
(
&
self
,
vals
:
impl
Iterator
<
Item
=
&
'tcx
ty
::
Const
<
'tcx
>>
,
)
->
Result
<
Vec
<
FieldPat
<
'tcx
>>
,
FallbackToConstRef
>
{
vals
.enumerate
()
.map
(|(
idx
,
val
)|
{
let
field
=
Field
::
new
(
idx
);
Ok
(
FieldPat
{
field
,
pattern
:
self
.recur
(
val
,
false
)
?
})
})
.collect
()
}
// Recursive helper for `to_pat`; invoke that (instead of calling this directly).
fn
recur
(
&
self
,
...
...
@@ -257,16 +269,6 @@ fn recur(
let
tcx
=
self
.tcx
();
let
param_env
=
self
.param_env
;
let
field_pats
=
|
vals
:
&
[
&
'tcx
ty
::
Const
<
'tcx
>
]|
->
Result
<
_
,
_
>
{
vals
.iter
()
.enumerate
()
.map
(|(
idx
,
val
)|
{
let
field
=
Field
::
new
(
idx
);
Ok
(
FieldPat
{
field
,
pattern
:
self
.recur
(
val
,
false
)
?
})
})
.collect
()
};
let
kind
=
match
cv
.ty
.kind
()
{
ty
::
Float
(
_
)
=>
{
tcx
.struct_span_lint_hir
(
...
...
@@ -361,12 +363,12 @@ fn recur(
variant_index
:
destructured
.variant
.expect
(
"destructed const of adt without variant id"
),
subpatterns
:
field_pats
(
destructured
.fields
)
?
,
subpatterns
:
self
.field_pats
(
destructured
.fields
.iter
()
.copied
()
)
?
,
}
}
ty
::
Tuple
(
_
)
|
ty
::
Adt
(
_
,
_
)
=>
{
let
destructured
=
tcx
.destructure_const
(
param_env
.and
(
cv
));
PatKind
::
Leaf
{
subpatterns
:
field_pats
(
destructured
.fields
)
?
}
PatKind
::
Leaf
{
subpatterns
:
self
.field_pats
(
destructured
.fields
.iter
()
.copied
()
)
?
}
}
ty
::
Array
(
..
)
=>
PatKind
::
Array
{
prefix
:
tcx
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录