我正在尝试阅读伺服的代码。例如,我正在layout_task.rs 中查看此代码:
use url::Url;
..我想知道这是指哪个代码(答案是rust-url)。
use
items 中包含的路径是相对于 crate 根[...]也可以在项目的开头使用
self
和super
use
来分别引用当前和直接父模块。所有关于访问声明中声明的模块的规则
use
都适用于模块声明和extern crate
声明。
参考资料(§5 板条箱和源文件)没有明确说明什么是“板条箱根”,但它确实分享了这一点:
一个 crate 包含一个嵌套模块范围的树。这棵树的顶层是一个匿名模块 [...] Rust 编译器总是使用单个源文件作为输入调用,并且总是产生一个输出包。该源文件的处理可能会导致其他源文件被加载为模块。
所以看起来要找到当前文件(layout_task.rs)所属的crate 根,我们需要弄清楚rustc
在构建 crate 时调用的源文件是什么。对于 Cargo,这在Cargo.toml中指定,默认为src/lib.rs
:
[lib]
path = "src/lib.rs"
就我而言,这是Cargo.toml和lib.rs有:
extern crate url;
pub mod layout_task;
到现在为止还挺好。要找出extern crate
指的是什么,我们需要再次查看Cargo.toml:
[dependencies.url]
version = "0.2"
货物文档声称“没有用单独的部分声明来自 crates.io 的依赖项”,但显然它们可以是......所以我们在 crates.io 上查看包:https ://crates.io/crates/url