Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
int
Rust
提交
43e1cdba
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,发现更多精彩内容 >>
未验证
提交
43e1cdba
编写于
6月 26, 2021
作者:
J
Justus K
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
rustdoc: Replace `FakeDefId` with new `ItemId` type
上级
6e9b3696
变更
14
隐藏空白更改
内联
并排
Showing
14 changed file
with
81 addition
and
86 deletion
+81
-86
src/librustdoc/clean/auto_trait.rs
src/librustdoc/clean/auto_trait.rs
+1
-1
src/librustdoc/clean/blanket_impl.rs
src/librustdoc/clean/blanket_impl.rs
+1
-1
src/librustdoc/clean/inline.rs
src/librustdoc/clean/inline.rs
+2
-2
src/librustdoc/clean/types.rs
src/librustdoc/clean/types.rs
+35
-39
src/librustdoc/core.rs
src/librustdoc/core.rs
+6
-5
src/librustdoc/formats/cache.rs
src/librustdoc/formats/cache.rs
+2
-2
src/librustdoc/html/format.rs
src/librustdoc/html/format.rs
+2
-2
src/librustdoc/html/render/mod.rs
src/librustdoc/html/render/mod.rs
+2
-2
src/librustdoc/json/conversions.rs
src/librustdoc/json/conversions.rs
+12
-14
src/librustdoc/json/mod.rs
src/librustdoc/json/mod.rs
+7
-7
src/librustdoc/passes/collect_trait_impls.rs
src/librustdoc/passes/collect_trait_impls.rs
+3
-3
src/librustdoc/passes/strip_hidden.rs
src/librustdoc/passes/strip_hidden.rs
+3
-3
src/librustdoc/passes/strip_private.rs
src/librustdoc/passes/strip_private.rs
+2
-2
src/librustdoc/passes/stripper.rs
src/librustdoc/passes/stripper.rs
+3
-3
未找到文件。
src/librustdoc/clean/auto_trait.rs
浏览文件 @
43e1cdba
...
...
@@ -113,7 +113,7 @@ fn generate_for_trait(
name
:
None
,
attrs
:
Default
::
default
(),
visibility
:
Inherited
,
def_id
:
FakeDefId
::
new_fake
(
item_def_id
.krate
)
,
def_id
:
ItemId
::
Auto
{
trait_
:
trait_def_id
,
for_
:
item_def_id
}
,
kind
:
box
ImplItem
(
Impl
{
span
:
Span
::
dummy
(),
unsafety
:
hir
::
Unsafety
::
Normal
,
...
...
src/librustdoc/clean/blanket_impl.rs
浏览文件 @
43e1cdba
...
...
@@ -96,7 +96,7 @@ impl<'a, 'tcx> BlanketImplFinder<'a, 'tcx> {
name
:
None
,
attrs
:
Default
::
default
(),
visibility
:
Inherited
,
def_id
:
FakeDefId
::
new_fake
(
item_def_id
.krate
)
,
def_id
:
ItemId
::
Blanket
{
trait_
:
trait_def_id
,
for_
:
item_def_id
}
,
kind
:
box
ImplItem
(
Impl
{
span
:
self
.cx.tcx
.def_span
(
impl_def_id
)
.clean
(
self
.cx
),
unsafety
:
hir
::
Unsafety
::
Normal
,
...
...
src/librustdoc/clean/inline.rs
浏览文件 @
43e1cdba
...
...
@@ -15,7 +15,7 @@
use
rustc_span
::
symbol
::{
kw
,
sym
,
Symbol
};
use
crate
::
clean
::{
self
,
utils
,
Attributes
,
AttributesExt
,
FakeDefId
,
GetDef
Id
,
NestedAttributesExt
,
Type
,
self
,
utils
,
Attributes
,
AttributesExt
,
GetDefId
,
Item
Id
,
NestedAttributesExt
,
Type
,
};
use
crate
::
core
::
DocContext
;
use
crate
::
formats
::
item_type
::
ItemType
;
...
...
@@ -486,7 +486,7 @@ fn build_module(
items
.push
(
clean
::
Item
{
name
:
None
,
attrs
:
box
clean
::
Attributes
::
default
(),
def_id
:
FakeDefId
::
new_fak
e
(
did
.krate
),
def_id
:
ItemId
::
Primitiv
e
(
did
.krate
),
visibility
:
clean
::
Public
,
kind
:
box
clean
::
ImportItem
(
clean
::
Import
::
new_simple
(
item
.ident.name
,
...
...
src/librustdoc/clean/types.rs
浏览文件 @
43e1cdba
use
std
::
cell
::
{
Cell
,
RefCell
}
;
use
std
::
cell
::
RefCell
;
use
std
::
default
::
Default
;
use
std
::
hash
::{
Hash
,
Hasher
};
use
std
::
iter
::
FromIterator
;
...
...
@@ -18,7 +18,7 @@
use
rustc_data_structures
::
thin_vec
::
ThinVec
;
use
rustc_hir
as
hir
;
use
rustc_hir
::
def
::{
CtorKind
,
DefKind
,
Res
};
use
rustc_hir
::
def_id
::{
CrateNum
,
DefId
,
DefIndex
,
CRATE_DEF_INDEX
,
LOCAL_CRATE
};
use
rustc_hir
::
def_id
::{
CrateNum
,
DefId
,
DefIndex
,
CRATE_DEF_INDEX
};
use
rustc_hir
::
lang_items
::
LangItem
;
use
rustc_hir
::{
BodyId
,
Mutability
};
use
rustc_index
::
vec
::
IndexVec
;
...
...
@@ -48,73 +48,68 @@
use
self
::
SelfTy
::
*
;
use
self
::
Type
::
*
;
crate
type
FakeDefIdSet
=
FxHashSet
<
FakeDef
Id
>
;
crate
type
ItemIdSet
=
FxHashSet
<
Item
Id
>
;
#[derive(Debug,
Clone,
PartialEq,
Eq,
PartialOrd,
Ord,
Hash,
Copy)]
crate
enum
FakeDefId
{
Real
(
DefId
),
Fake
(
DefIndex
,
CrateNum
),
}
impl
FakeDefId
{
#[cfg(parallel_compiler)]
crate
fn
new_fake
(
crate
:
CrateNum
)
->
Self
{
unimplemented!
(
""
)
}
#[cfg(not(parallel_compiler))]
crate
fn
new_fake
(
krate
:
CrateNum
)
->
Self
{
thread_local!
(
static
FAKE_DEF_ID_COUNTER
:
Cell
<
usize
>
=
Cell
::
new
(
0
));
let
id
=
FAKE_DEF_ID_COUNTER
.with
(|
id
|
{
let
tmp
=
id
.get
();
id
.set
(
tmp
+
1
);
tmp
});
Self
::
Fake
(
DefIndex
::
from
(
id
),
krate
)
}
crate
enum
ItemId
{
/// A "normal" item that uses a [`DefId`] for identification.
DefId
(
DefId
),
/// Identifier that is used for auto traits.
Auto
{
trait_
:
DefId
,
for_
:
DefId
},
/// Identifier that is used for blanket implementations.
Blanket
{
trait_
:
DefId
,
for_
:
DefId
},
/// Identifier for primitive types.
Primitive
(
CrateNum
),
}
impl
ItemId
{
#[inline]
crate
fn
is_local
(
self
)
->
bool
{
match
self
{
FakeDefId
::
Real
(
id
)
=>
id
.is_local
(),
FakeDefId
::
Fake
(
_
,
krate
)
=>
krate
==
LOCAL_CRATE
,
ItemId
::
DefId
(
id
)
=>
id
.is_local
(),
_
=>
false
,
}
}
#[inline]
#[track_caller]
crate
fn
expect_real
(
self
)
->
rustc_hir
::
def_id
::
DefId
{
self
.as_real
()
.unwrap_or_else
(||
panic!
(
"FakeDefId::expect_real: `{:?}` isn't real"
,
self
))
self
.as_real
()
.unwrap_or_else
(||
panic!
(
"ItemId::expect_real: `{:?}` isn't a real ItemId"
,
self
))
}
#[inline]
crate
fn
as_real
(
self
)
->
Option
<
DefId
>
{
match
self
{
FakeDefId
::
Real
(
id
)
=>
Some
(
id
),
FakeDefId
::
Fake
(
_
,
_
)
=>
None
,
ItemId
::
DefId
(
id
)
=>
Some
(
id
),
_
=>
None
,
}
}
#[inline]
crate
fn
krate
(
self
)
->
CrateNum
{
match
self
{
FakeDefId
::
Real
(
id
)
=>
id
.krate
,
FakeDefId
::
Fake
(
_
,
krate
)
=>
krate
,
ItemId
::
DefId
(
id
)
=>
id
.krate
,
ItemId
::
Auto
{
trait_
,
..
}
=>
trait_
.krate
,
ItemId
::
Blanket
{
trait_
,
..
}
=>
trait_
.krate
,
ItemId
::
Primitive
(
krate
)
=>
krate
,
}
}
#[inline]
crate
fn
index
(
self
)
->
Option
<
DefIndex
>
{
match
self
{
FakeDefId
::
Real
(
id
)
=>
Some
(
id
.index
),
FakeDefId
::
Fake
(
_
,
_
)
=>
None
,
ItemId
::
DefId
(
id
)
=>
Some
(
id
.index
),
ItemId
::
Auto
{
trait_
,
..
}
=>
Some
(
trait_
.index
),
ItemId
::
Blanket
{
trait_
,
..
}
=>
Some
(
trait_
.index
),
ItemId
::
Primitive
(
..
)
=>
None
,
}
}
}
impl
From
<
DefId
>
for
FakeDef
Id
{
impl
From
<
DefId
>
for
Item
Id
{
fn
from
(
id
:
DefId
)
->
Self
{
Self
::
Real
(
id
)
Self
::
DefId
(
id
)
}
}
...
...
@@ -338,14 +333,14 @@ fn to_remote(url: impl ToString) -> ExternalLocation {
/// Information about this item that is specific to what kind of item it is.
/// E.g., struct vs enum vs function.
crate
kind
:
Box
<
ItemKind
>
,
crate
def_id
:
FakeDef
Id
,
crate
def_id
:
Item
Id
,
crate
cfg
:
Option
<
Arc
<
Cfg
>>
,
}
// `Item` is used a lot. Make sure it doesn't unintentionally get bigger.
#[cfg(all(target_arch
=
"x86_64"
,
target_pointer_width
=
"64"
))]
rustc_data_structures
::
static_assert_size!
(
Item
,
48
);
rustc_data_structures
::
static_assert_size!
(
Item
,
56
);
crate
fn
rustc_span
(
def_id
:
DefId
,
tcx
:
TyCtxt
<
'_
>
)
->
Span
{
Span
::
from_rustc_span
(
def_id
.as_local
()
.map_or_else
(
...
...
@@ -664,7 +659,8 @@ pub fn from_def_id_and_attrs_and_parts(
}
crate
fn
is_fake
(
&
self
)
->
bool
{
matches!
(
self
.def_id
,
FakeDefId
::
Fake
(
_
,
_
))
// FIXME: Find a better way to handle this
!
matches!
(
self
.def_id
,
ItemId
::
DefId
(
..
))
}
}
...
...
src/librustdoc/core.rs
浏览文件 @
43e1cdba
...
...
@@ -30,7 +30,7 @@
use
std
::
rc
::
Rc
;
use
crate
::
clean
::
inline
::
build_external_trait
;
use
crate
::
clean
::{
self
,
FakeDef
Id
,
TraitWithExtraInfo
};
use
crate
::
clean
::{
self
,
Item
Id
,
TraitWithExtraInfo
};
use
crate
::
config
::{
Options
as
RustdocOptions
,
OutputFormat
,
RenderOptions
};
use
crate
::
formats
::
cache
::
Cache
;
use
crate
::
passes
::{
self
,
Condition
::
*
,
ConditionalPass
};
...
...
@@ -78,7 +78,7 @@
/// This same cache is used throughout rustdoc, including in [`crate::html::render`].
crate
cache
:
Cache
,
/// Used by [`clean::inline`] to tell if an item has already been inlined.
crate
inlined
:
FxHashSet
<
FakeDef
Id
>
,
crate
inlined
:
FxHashSet
<
Item
Id
>
,
/// Used by `calculate_doc_coverage`.
crate
output_format
:
OutputFormat
,
}
...
...
@@ -128,12 +128,13 @@ impl<'tcx> DocContext<'tcx> {
/// Like `hir().local_def_id_to_hir_id()`, but skips calling it on fake DefIds.
/// (This avoids a slice-index-out-of-bounds panic.)
crate
fn
as_local_hir_id
(
tcx
:
TyCtxt
<
'_
>
,
def_id
:
FakeDef
Id
)
->
Option
<
HirId
>
{
crate
fn
as_local_hir_id
(
tcx
:
TyCtxt
<
'_
>
,
def_id
:
Item
Id
)
->
Option
<
HirId
>
{
match
def_id
{
FakeDefId
::
Real
(
real_id
)
=>
{
ItemId
::
DefId
(
real_id
)
=>
{
real_id
.as_local
()
.map
(|
def_id
|
tcx
.hir
()
.local_def_id_to_hir_id
(
def_id
))
}
FakeDefId
::
Fake
(
_
,
_
)
=>
None
,
// FIXME: Can this be `Some` for `Auto` or `Blanket`?
_
=>
None
,
}
}
}
...
...
src/librustdoc/formats/cache.rs
浏览文件 @
43e1cdba
...
...
@@ -8,7 +8,7 @@
use
rustc_middle
::
ty
::
TyCtxt
;
use
rustc_span
::
symbol
::
sym
;
use
crate
::
clean
::{
self
,
FakeDefId
,
GetDef
Id
};
use
crate
::
clean
::{
self
,
GetDefId
,
Item
Id
};
use
crate
::
fold
::
DocFolder
;
use
crate
::
formats
::
item_type
::
ItemType
;
use
crate
::
formats
::
Impl
;
...
...
@@ -122,7 +122,7 @@
/// All intra-doc links resolved so far.
///
/// Links are indexed by the DefId of the item they document.
crate
intra_doc_links
:
BTreeMap
<
FakeDef
Id
,
Vec
<
clean
::
ItemLink
>>
,
crate
intra_doc_links
:
BTreeMap
<
Item
Id
,
Vec
<
clean
::
ItemLink
>>
,
}
/// This struct is used to wrap the `cache` and `tcx` in order to run `DocFolder`.
...
...
src/librustdoc/html/format.rs
浏览文件 @
43e1cdba
...
...
@@ -19,7 +19,7 @@
use
rustc_target
::
spec
::
abi
::
Abi
;
use
crate
::
clean
::{
self
,
utils
::
find_nearest_parent_module
,
ExternalCrate
,
FakeDefId
,
GetDef
Id
,
PrimitiveType
,
self
,
utils
::
find_nearest_parent_module
,
ExternalCrate
,
GetDefId
,
Item
Id
,
PrimitiveType
,
};
use
crate
::
formats
::
item_type
::
ItemType
;
use
crate
::
html
::
escape
::
Escape
;
...
...
@@ -1181,7 +1181,7 @@ fn inner_full_print(
impl
clean
::
Visibility
{
crate
fn
print_with_space
<
'a
,
'tcx
:
'a
>
(
self
,
item_did
:
FakeDef
Id
,
item_did
:
Item
Id
,
cx
:
&
'a
Context
<
'tcx
>
,
)
->
impl
fmt
::
Display
+
'a
+
Captures
<
'tcx
>
{
let
to_print
=
match
self
{
...
...
src/librustdoc/html/render/mod.rs
浏览文件 @
43e1cdba
...
...
@@ -53,7 +53,7 @@
use
serde
::
ser
::
SerializeSeq
;
use
serde
::{
Serialize
,
Serializer
};
use
crate
::
clean
::{
self
,
FakeDefId
,
GetDef
Id
,
RenderedLink
,
SelfTy
};
use
crate
::
clean
::{
self
,
GetDefId
,
Item
Id
,
RenderedLink
,
SelfTy
};
use
crate
::
docfs
::
PathError
;
use
crate
::
error
::
Error
;
use
crate
::
formats
::
cache
::
Cache
;
...
...
@@ -987,7 +987,7 @@ fn render_attributes_in_code(w: &mut Buffer, it: &clean::Item) {
#[derive(Copy,
Clone)]
enum
AssocItemLink
<
'a
>
{
Anchor
(
Option
<&
'a
str
>
),
GotoSource
(
FakeDef
Id
,
&
'a
FxHashSet
<
Symbol
>
),
GotoSource
(
Item
Id
,
&
'a
FxHashSet
<
Symbol
>
),
}
impl
<
'a
>
AssocItemLink
<
'a
>
{
...
...
src/librustdoc/json/conversions.rs
浏览文件 @
43e1cdba
...
...
@@ -15,7 +15,7 @@
use
rustdoc_json_types
::
*
;
use
crate
::
clean
::
utils
::
print_const_expr
;
use
crate
::
clean
::{
self
,
FakeDef
Id
};
use
crate
::
clean
::{
self
,
Item
Id
};
use
crate
::
formats
::
item_type
::
ItemType
;
use
crate
::
json
::
JsonRenderer
;
use
std
::
collections
::
HashSet
;
...
...
@@ -30,7 +30,7 @@ pub(super) fn convert_item(&self, item: clean::Item) -> Option<Item> {
.into_iter
()
.flatten
()
.filter_map
(|
clean
::
ItemLink
{
link
,
did
,
..
}|
{
did
.map
(|
did
|
(
link
.clone
(),
from_
def
_id
(
did
.into
())))
did
.map
(|
did
|
(
link
.clone
(),
from_
item
_id
(
did
.into
())))
})
.collect
();
let
docs
=
item
.attrs
.collapsed_doc_value
();
...
...
@@ -47,7 +47,7 @@ pub(super) fn convert_item(&self, item: clean::Item) -> Option<Item> {
_
=>
from_clean_item
(
item
,
self
.tcx
),
};
Some
(
Item
{
id
:
from_
def
_id
(
def_id
),
id
:
from_
item
_id
(
def_id
),
crate_id
:
def_id
.krate
()
.as_u32
(),
name
:
name
.map
(|
sym
|
sym
.to_string
()),
span
:
self
.convert_span
(
span
),
...
...
@@ -86,7 +86,7 @@ fn convert_visibility(&self, v: clean::Visibility) -> Visibility {
Inherited
=>
Visibility
::
Default
,
Restricted
(
did
)
if
did
.index
==
CRATE_DEF_INDEX
=>
Visibility
::
Crate
,
Restricted
(
did
)
=>
Visibility
::
Restricted
{
parent
:
from_
def
_id
(
did
.into
()),
parent
:
from_
item
_id
(
did
.into
()),
path
:
self
.tcx
.def_path
(
did
)
.to_string_no_crate_verbose
(),
},
}
...
...
@@ -170,12 +170,10 @@ fn from_tcx(kind: clean::TypeBindingKind, tcx: TyCtxt<'_>) -> Self {
}
}
crate
fn
from_
def_id
(
did
:
FakeDef
Id
)
->
Id
{
crate
fn
from_
item_id
(
did
:
Item
Id
)
->
Id
{
match
did
{
FakeDefId
::
Real
(
did
)
=>
Id
(
format!
(
"{}:{}"
,
did
.krate
.as_u32
(),
u32
::
from
(
did
.index
))),
// We need to differentiate real and fake ids, because the indices might overlap for fake
// and real DefId's, which would cause two different Id's treated as they were the same.
FakeDefId
::
Fake
(
idx
,
krate
)
=>
Id
(
format!
(
"F{}:{}"
,
krate
.as_u32
(),
u32
::
from
(
idx
))),
ItemId
::
DefId
(
did
)
=>
Id
(
format!
(
"{}:{}"
,
did
.krate
.as_u32
(),
u32
::
from
(
did
.index
))),
_
=>
todo!
(
"how should json ItemId's be represented?"
),
}
}
...
...
@@ -375,7 +373,7 @@ fn from_tcx(ty: clean::Type, tcx: TyCtxt<'_>) -> Self {
match
ty
{
ResolvedPath
{
path
,
did
,
is_generic
:
_
}
=>
Type
::
ResolvedPath
{
name
:
path
.whole_name
(),
id
:
from_
def
_id
(
did
.into
()),
id
:
from_
item
_id
(
did
.into
()),
args
:
path
.segments
.last
()
.map
(|
args
|
Box
::
new
(
args
.clone
()
.args
.into_tcx
(
tcx
))),
param_names
:
Vec
::
new
(),
},
...
...
@@ -387,7 +385,7 @@ fn from_tcx(ty: clean::Type, tcx: TyCtxt<'_>) -> Self {
Type
::
ResolvedPath
{
name
:
path
.whole_name
(),
id
:
from_
def
_id
(
id
.into
()),
id
:
from_
item
_id
(
id
.into
()),
args
:
path
.segments
.last
()
...
...
@@ -568,13 +566,13 @@ fn from_tcx(import: clean::Import, _tcx: TyCtxt<'_>) -> Self {
Simple
(
s
)
=>
Import
{
source
:
import
.source.path
.whole_name
(),
name
:
s
.to_string
(),
id
:
import
.source.did
.map
(
FakeDefId
::
from
)
.map
(
from_def
_id
),
id
:
import
.source.did
.map
(
ItemId
::
from
)
.map
(
from_item
_id
),
glob
:
false
,
},
Glob
=>
Import
{
source
:
import
.source.path
.whole_name
(),
name
:
import
.source.path
.last_name
()
.to_string
(),
id
:
import
.source.did
.map
(
FakeDefId
::
from
)
.map
(
from_def
_id
),
id
:
import
.source.did
.map
(
ItemId
::
from
)
.map
(
from_item
_id
),
glob
:
true
,
},
}
...
...
@@ -668,5 +666,5 @@ fn from_tcx(kind: ItemType, _tcx: TyCtxt<'_>) -> Self {
}
fn
ids
(
items
:
impl
IntoIterator
<
Item
=
clean
::
Item
>
)
->
Vec
<
Id
>
{
items
.into_iter
()
.filter
(|
x
|
!
x
.is_stripped
())
.map
(|
i
|
from_
def
_id
(
i
.def_id
))
.collect
()
items
.into_iter
()
.filter
(|
x
|
!
x
.is_stripped
())
.map
(|
i
|
from_
item
_id
(
i
.def_id
))
.collect
()
}
src/librustdoc/json/mod.rs
浏览文件 @
43e1cdba
...
...
@@ -25,7 +25,7 @@
use
crate
::
formats
::
cache
::
Cache
;
use
crate
::
formats
::
FormatRenderer
;
use
crate
::
html
::
render
::
cache
::
ExternalLocation
;
use
crate
::
json
::
conversions
::{
from_
def
_id
,
IntoWithTcx
};
use
crate
::
json
::
conversions
::{
from_
item
_id
,
IntoWithTcx
};
#[derive(Clone)]
crate
struct
JsonRenderer
<
'tcx
>
{
...
...
@@ -53,7 +53,7 @@ fn get_trait_implementors(&mut self, id: DefId) -> Vec<types::Id> {
.map
(|
i
|
{
let
item
=
&
i
.impl_item
;
self
.item
(
item
.clone
())
.unwrap
();
from_
def
_id
(
item
.def_id
)
from_
item
_id
(
item
.def_id
)
})
.collect
()
})
...
...
@@ -71,7 +71,7 @@ fn get_impls(&mut self, id: DefId) -> Vec<types::Id> {
let
item
=
&
i
.impl_item
;
if
item
.def_id
.is_local
()
{
self
.item
(
item
.clone
())
.unwrap
();
Some
(
from_
def
_id
(
item
.def_id
))
Some
(
from_
item
_id
(
item
.def_id
))
}
else
{
None
}
...
...
@@ -91,9 +91,9 @@ fn get_trait_items(&mut self) -> Vec<(types::Id, types::Item)> {
let
trait_item
=
&
trait_item
.trait_
;
trait_item
.items
.clone
()
.into_iter
()
.for_each
(|
i
|
self
.item
(
i
)
.unwrap
());
Some
((
from_
def
_id
(
id
.into
()),
from_
item
_id
(
id
.into
()),
types
::
Item
{
id
:
from_
def
_id
(
id
.into
()),
id
:
from_
item
_id
(
id
.into
()),
crate_id
:
id
.krate
.as_u32
(),
name
:
self
.cache
...
...
@@ -170,7 +170,7 @@ fn item(&mut self, item: clean::Item) -> Result<(), Error> {
}
else
if
let
types
::
ItemEnum
::
Enum
(
ref
mut
e
)
=
new_item
.inner
{
e
.impls
=
self
.get_impls
(
id
.expect_real
())
}
let
removed
=
self
.index
.borrow_mut
()
.insert
(
from_
def
_id
(
id
),
new_item
.clone
());
let
removed
=
self
.index
.borrow_mut
()
.insert
(
from_
item
_id
(
id
),
new_item
.clone
());
// FIXME(adotinthevoid): Currently, the index is duplicated. This is a sanity check
// to make sure the items are unique. The main place this happens is when an item, is
...
...
@@ -207,7 +207,7 @@ fn after_krate(&mut self) -> Result<(), Error> {
.chain
(
self
.cache.external_paths
.clone
()
.into_iter
())
.map
(|(
k
,
(
path
,
kind
))|
{
(
from_
def
_id
(
k
.into
()),
from_
item
_id
(
k
.into
()),
types
::
ItemSummary
{
crate_id
:
k
.krate
.as_u32
(),
path
,
...
...
src/librustdoc/passes/collect_trait_impls.rs
浏览文件 @
43e1cdba
...
...
@@ -149,7 +149,7 @@ fn fold_item(&mut self, i: Item) -> Option<Item> {
#[derive(Default)]
struct
ItemCollector
{
items
:
FxHashSet
<
FakeDef
Id
>
,
items
:
FxHashSet
<
Item
Id
>
,
}
impl
ItemCollector
{
...
...
@@ -168,7 +168,7 @@ fn fold_item(&mut self, i: Item) -> Option<Item> {
struct
BadImplStripper
{
prims
:
FxHashSet
<
PrimitiveType
>
,
items
:
FxHashSet
<
FakeDef
Id
>
,
items
:
FxHashSet
<
Item
Id
>
,
}
impl
BadImplStripper
{
...
...
@@ -185,7 +185,7 @@ fn keep_impl(&self, ty: &Type) -> bool {
}
}
fn
keep_impl_with_def_id
(
&
self
,
did
:
FakeDef
Id
)
->
bool
{
fn
keep_impl_with_def_id
(
&
self
,
did
:
Item
Id
)
->
bool
{
self
.items
.contains
(
&
did
)
}
}
src/librustdoc/passes/strip_hidden.rs
浏览文件 @
43e1cdba
...
...
@@ -2,7 +2,7 @@
use
std
::
mem
;
use
crate
::
clean
;
use
crate
::
clean
::{
FakeDefIdSet
,
Item
,
NestedAttributesExt
};
use
crate
::
clean
::{
Item
,
ItemIdSet
,
NestedAttributesExt
};
use
crate
::
core
::
DocContext
;
use
crate
::
fold
::{
strip_item
,
DocFolder
};
use
crate
::
passes
::{
ImplStripper
,
Pass
};
...
...
@@ -15,7 +15,7 @@
/// Strip items marked `#[doc(hidden)]`
crate
fn
strip_hidden
(
krate
:
clean
::
Crate
,
_
:
&
mut
DocContext
<
'_
>
)
->
clean
::
Crate
{
let
mut
retained
=
FakeDef
IdSet
::
default
();
let
mut
retained
=
Item
IdSet
::
default
();
// strip all #[doc(hidden)] items
let
krate
=
{
...
...
@@ -29,7 +29,7 @@
}
struct
Stripper
<
'a
>
{
retained
:
&
'a
mut
FakeDef
IdSet
,
retained
:
&
'a
mut
Item
IdSet
,
update_retained
:
bool
,
}
...
...
src/librustdoc/passes/strip_private.rs
浏览文件 @
43e1cdba
use
crate
::
clean
::{
self
,
FakeDef
IdSet
};
use
crate
::
clean
::{
self
,
Item
IdSet
};
use
crate
::
core
::
DocContext
;
use
crate
::
fold
::
DocFolder
;
use
crate
::
passes
::{
ImplStripper
,
ImportStripper
,
Pass
,
Stripper
};
...
...
@@ -14,7 +14,7 @@
/// crate, specified by the `xcrate` flag.
crate
fn
strip_private
(
mut
krate
:
clean
::
Crate
,
cx
:
&
mut
DocContext
<
'_
>
)
->
clean
::
Crate
{
// This stripper collects all *retained* nodes.
let
mut
retained
=
FakeDef
IdSet
::
default
();
let
mut
retained
=
Item
IdSet
::
default
();
// strip all private items
{
...
...
src/librustdoc/passes/stripper.rs
浏览文件 @
43e1cdba
...
...
@@ -2,11 +2,11 @@
use
rustc_middle
::
middle
::
privacy
::
AccessLevels
;
use
std
::
mem
;
use
crate
::
clean
::{
self
,
FakeDefIdSet
,
GetDefId
,
Item
};
use
crate
::
clean
::{
self
,
GetDefId
,
Item
,
ItemIdSet
};
use
crate
::
fold
::{
strip_item
,
DocFolder
};
crate
struct
Stripper
<
'a
>
{
crate
retained
:
&
'a
mut
FakeDef
IdSet
,
crate
retained
:
&
'a
mut
Item
IdSet
,
crate
access_levels
:
&
'a
AccessLevels
<
DefId
>
,
crate
update_retained
:
bool
,
}
...
...
@@ -116,7 +116,7 @@ fn fold_item(&mut self, i: Item) -> Option<Item> {
/// This stripper discards all impls which reference stripped items
crate
struct
ImplStripper
<
'a
>
{
crate
retained
:
&
'a
FakeDef
IdSet
,
crate
retained
:
&
'a
Item
IdSet
,
}
impl
<
'a
>
DocFolder
for
ImplStripper
<
'a
>
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录