Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
int
Rust
提交
28bdf892
R
Rust
项目概览
int
/
Rust
接近 1 年 前同步成功
通知
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,发现更多精彩内容 >>
提交
28bdf892
编写于
10月 31, 2021
作者:
N
Noah Lev
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
rustdoc: Use `DocVisitor` for sources collection
上级
5a9bbba2
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
14 addition
and
12 deletion
+14
-12
src/librustdoc/html/sources.rs
src/librustdoc/html/sources.rs
+14
-12
未找到文件。
src/librustdoc/html/sources.rs
浏览文件 @
28bdf892
use
crate
::
clean
;
use
crate
::
docfs
::
PathError
;
use
crate
::
error
::
Error
;
use
crate
::
fold
::
DocFolder
;
use
crate
::
html
::
format
::
Buffer
;
use
crate
::
html
::
highlight
;
use
crate
::
html
::
layout
;
use
crate
::
html
::
render
::{
Context
,
BASIC_KEYWORDS
};
use
crate
::
visit
::
DocVisitor
;
use
rustc_data_structures
::
fx
::{
FxHashMap
,
FxHashSet
};
use
rustc_hir
::
def_id
::
LOCAL_CRATE
;
use
rustc_middle
::
ty
::
TyCtxt
;
...
...
@@ -18,10 +18,13 @@
crate
fn
render
(
cx
:
&
mut
Context
<
'_
>
,
krate
:
clean
::
Crate
)
->
Result
<
clean
::
Crate
,
Error
>
{
info!
(
"emitting source files"
);
let
dst
=
cx
.dst
.join
(
"src"
)
.join
(
&*
krate
.name
(
cx
.tcx
())
.as_str
());
cx
.shared
.ensure_dir
(
&
dst
)
?
;
let
mut
folder
=
SourceCollector
{
dst
,
cx
,
emitted_local_sources
:
FxHashSet
::
default
()
};
Ok
(
folder
.fold_crate
(
krate
))
let
mut
collector
=
SourceCollector
{
dst
,
cx
,
emitted_local_sources
:
FxHashSet
::
default
()
};
collector
.visit_crate
(
&
krate
);
Ok
(
krate
)
}
crate
fn
collect_local_sources
<
'tcx
>
(
...
...
@@ -30,8 +33,7 @@
krate
:
clean
::
Crate
,
)
->
(
clean
::
Crate
,
FxHashMap
<
PathBuf
,
String
>
)
{
let
mut
lsc
=
LocalSourcesCollector
{
tcx
,
local_sources
:
FxHashMap
::
default
(),
src_root
};
let
krate
=
lsc
.fold_crate
(
krate
);
lsc
.visit_crate
(
&
krate
);
(
krate
,
lsc
.local_sources
)
}
...
...
@@ -79,13 +81,13 @@ fn add_local_source(&mut self, item: &clean::Item) {
}
}
impl
Doc
Folde
r
for
LocalSourcesCollector
<
'_
,
'_
>
{
fn
fold_item
(
&
mut
self
,
item
:
clean
::
Item
)
->
Option
<
clean
::
Item
>
{
self
.add_local_source
(
&
item
);
impl
Doc
Visito
r
for
LocalSourcesCollector
<
'_
,
'_
>
{
fn
visit_item
(
&
mut
self
,
item
:
&
clean
::
Item
)
{
self
.add_local_source
(
item
);
// FIXME: if `include_sources` isn't set and DocFolder didn't require consuming the crate by value,
// we could return None here without having to walk the rest of the crate.
Some
(
self
.fold_item_recur
(
item
)
)
self
.visit_item_recur
(
item
)
}
}
...
...
@@ -98,8 +100,8 @@ struct SourceCollector<'a, 'tcx> {
emitted_local_sources
:
FxHashSet
<
PathBuf
>
,
}
impl
Doc
Folde
r
for
SourceCollector
<
'_
,
'_
>
{
fn
fold_item
(
&
mut
self
,
item
:
clean
::
Item
)
->
Option
<
clean
::
Item
>
{
impl
Doc
Visito
r
for
SourceCollector
<
'_
,
'_
>
{
fn
visit_item
(
&
mut
self
,
item
:
&
clean
::
Item
)
{
let
tcx
=
self
.cx
.tcx
();
let
span
=
item
.span
(
tcx
);
let
sess
=
tcx
.sess
;
...
...
@@ -134,7 +136,7 @@ fn fold_item(&mut self, item: clean::Item) -> Option<clean::Item> {
}
// FIXME: if `include_sources` isn't set and DocFolder didn't require consuming the crate by value,
// we could return None here without having to walk the rest of the crate.
Some
(
self
.fold_item_recur
(
item
)
)
self
.visit_item_recur
(
item
)
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录