Rust 中 super 和 crate 关键字的作用是什么?

推荐答案

在 Rust 中,supercrate 是两个用于模块路径的关键字,它们的作用如下:

  • super:用于引用当前模块的父模块中的项。它类似于文件系统中的 ..,表示上一级目录。
  • crate:用于引用当前 crate 的根模块中的项。它类似于文件系统中的 /,表示根目录。

本题详细解读

super 关键字

super 关键字用于在模块系统中引用父模块中的项。它允许你在当前模块中访问父模块中的内容,而不需要写出完整的路径。

例如:

-- -------------------- ---- -------
--- ------ -
    --- -- ----- -
        ---------------- ------ -----------
    -

    --- ----- -
        --- -- ----- -
            -- -- ----- ---------
            -------------
        -
    -
-

-- ------ -
    --------------------- -- --- ------ ------ --------
-

在这个例子中,child 模块中的 bar 函数通过 super::foo() 调用了 parent 模块中的 foo 函数。

crate 关键字

crate 关键字用于引用当前 crate 的根模块中的项。它允许你在任何模块中访问 crate 根模块中的内容。

例如:

-- -------------------- ---- -------
-- ---- ----- ----
--- ---- -
    --- -- ----- -
        -------------- ------ -----------
    -

    --- ------ -
        --- -- ----- -
            -- -- ----- ---------
            -------------------
        -
    -
-

-- ------ -
    -------------------- -- --- ---- ------ --------
-

在这个例子中,nested 模块中的 qux 函数通过 crate::root::baz() 调用了 root 模块中的 baz 函数。

总结

  • super 用于访问当前模块的父模块中的项。
  • crate 用于访问当前 crate 的根模块中的项。

这两个关键字在 Rust 的模块系统中非常有用,尤其是在处理复杂的模块层次结构时。

纠错
反馈