< 返回版块

樂見 发表于 2022-06-14 11:00

在Struct std::collections::hash_map::HashMap中的entry方法,标准库代码如下:

pub fn entry(&mut self, key: K) -> Entry<'_, K, V> {
        map_entry(self.base.rustc_entry(key))
    }

1.方法代码中的map_entry()这个函数找不到在哪定义的。

2.use hashbrown::hash_map as base; 在hashbrown第三方库中也找不到rustc_entry()的定义。

求解答.谢谢!

评论区

写评论
作者 樂見 2022-06-14 15:34

太感谢了!YYDS👍👍👍☕

--
👇
苦瓜小仔: 因为 rustc_entry 模块由 rustc-internal-api feature 控制,在 Cargo.tomlpackage.metadata.docs.rs 表中并没有开启 rustc-internal-api feature。

如果你在本地使用 cargo doc --all-features 命令生成 hashbrown 的文档,应该是能看到那部分的。

// src: https://github.com/rust-lang/hashbrown/blob/decf995910642f7ad5f68dd32cae6160bccbc116/src/lib.rs#L80-L90

#[cfg(feature = "rustc-internal-api")]
mod rustc_entry;

pub mod hash_map {
    #[cfg(feature = "rustc-internal-api")]
    pub use crate::rustc_entry::*;
    ...
}
# src: https://github.com/rust-lang/hashbrown/blob/decf995910642f7ad5f68dd32cae6160bccbc116/Cargo.toml#L39-L60

[features]
default = ["ahash", "inline-more"]
ahash-compile-time-rng = ["ahash/compile-time-rng"]
nightly = []
rustc-internal-api = []
rustc-dep-of-std = [
    "nightly",
    "core",
    "compiler_builtins",
    "alloc",
    "rustc-internal-api",
]
raw = []
inline-more = []

[package.metadata.docs.rs]
features = ["nightly", "rayon", "serde", "raw"]
苦瓜小仔 2022-06-14 15:26

因为 rustc_entry 模块由 rustc-internal-api feature 控制,在 Cargo.tomlpackage.metadata.docs.rs 表中并没有开启 rustc-internal-api feature。

如果你在本地使用 cargo doc --all-features 命令生成 hashbrown 的文档,应该是能看到那部分的。

// src: https://github.com/rust-lang/hashbrown/blob/decf995910642f7ad5f68dd32cae6160bccbc116/src/lib.rs#L80-L90

#[cfg(feature = "rustc-internal-api")]
mod rustc_entry;

pub mod hash_map {
    #[cfg(feature = "rustc-internal-api")]
    pub use crate::rustc_entry::*;
    ...
}
# src: https://github.com/rust-lang/hashbrown/blob/decf995910642f7ad5f68dd32cae6160bccbc116/Cargo.toml#L39-L60

[features]
default = ["ahash", "inline-more"]
ahash-compile-time-rng = ["ahash/compile-time-rng"]
nightly = []
rustc-internal-api = []
rustc-dep-of-std = [
    "nightly",
    "core",
    "compiler_builtins",
    "alloc",
    "rustc-internal-api",
]
raw = []
inline-more = []

[package.metadata.docs.rs]
features = ["nightly", "rayon", "serde", "raw"]
作者 樂見 2022-06-14 15:22

樂見: 谢谢! 找到了.

再请教一下为什么hashbrown的库文档没有rustc_entry.rs这个文档呢?而在github才有。 谢谢!

--
👇
苦瓜小仔:

  1. map_entry
  2. rustc_entry
1 共 4 条评论, 1 页