.. SPDX-License-Identifier: GPL-2.0 .. include:: ../disclaimer-zh_CN.rst :Original: Documentation/rust/general-information.rst :翻译: 司延腾 Yanteng Si <siyanteng@loongson.cn> ĺźşćś¬äżˇćŻ ======== 本文档包ĺ«äş†ĺś¨ĺ†…ć ¸ä¸ä˝żç”¨Rust支ćŚć—¶éś€č¦äş†č§Łçš„有用信ćŻă€‚ 代ç 文档 -------- Rustĺ†…ć ¸ä»Łç 使用其内置的文档生ć器 ``rustdoc`` 进行记录。 生ćçš„HTML文档包括集ććśç´˘ă€é“ľćŽĄéˇąďĽĺ¦‚类型ă€ĺ‡˝ć•°ă€ĺ¸¸é‡ŹďĽ‰ă€ćşä»Łç ç‰ă€‚ĺ®ä»¬ĺŹŻä»Ąĺś¨ä»Ąä¸‹ĺś°ĺť€é…读 ďĽTODO:当在主线ä¸ć—¶é“ľćŽĄďĽŚä¸Žĺ…¶ä»–ć–‡ćˇŁä¸€čµ·ç”źć): http://kernel.org/ 这些文档也可以ĺľĺ®ąć“地在本地生ćĺ’Śé…读。这相当快ďĽä¸ŽçĽ–译代ç 本身的顺序相ĺŚďĽ‰ďĽŚč€Śä¸”不需č¦ç‰ą 殊的工具ć–环ĺ˘ă€‚这有一个额外的好处,那就ćŻĺ®ä»¬ĺ°†ć ąćŤ®ć‰€ä˝żç”¨çš„ç‰ąĺ®šĺ†…ć ¸é…Ťç˝®čż›čˇŚĺ®šĺ¶ă€‚č¦ç”źćĺ® ä»¬ďĽŚčŻ·ä˝żç”¨ ``rustdoc`` ç›®ć ‡ďĽŚĺą¶ä˝żç”¨çĽ–čŻ‘ć—¶ä˝żç”¨çš„ç›¸ĺŚč°ç”¨ďĽŚäľ‹ĺ¦‚:: make LLVM=1 rustdoc č¦ĺś¨ä˝ 的网络浏č§ĺ™¨ä¸ćś¬ĺś°é…读该文档,请čżčˇŚĺ¦‚:: xdg-open rust/doc/kernel/index.html č¦äş†č§Łĺ¦‚何编写文档,请看 coding-guidelines.rst 。 额外的lints ----------- 虽然 ``rustc`` ćŻä¸€ä¸Şéťžĺ¸¸ćś‰ç”¨çš„编译器,但一些额外的lintsĺ’Śĺ†ćžĺŹŻä»Ąé€ščż‡ ``clippy`` ďĽä¸€ä¸ŞRust linter)来实现。č¦ĺŻç”¨ĺ®ďĽŚčŻ·ĺ°†CLIPPY=1äĽ é€’ĺ°ç”¨äşŽçĽ–译的ĺŚä¸€č°ç”¨ä¸ďĽŚäľ‹ĺ¦‚:: make LLVM=1 CLIPPY=1 请注意,Clippy可č˝äĽšć”ąĺŹä»Łç 生ćďĽŚĺ› ć¤ĺś¨ćž„建产ĺ“ĺ†…ć ¸ć—¶ä¸Ťĺş”čŻĄĺŻç”¨ĺ®ă€‚ 抽象和绑定 ---------- 抽象ćŻç”¨Rust代ç 包装来自Cç«Żçš„ĺ†…ć ¸ĺŠźč˝ă€‚ 为了使用来自C端的函数和类型,需č¦ĺ›ĺ»şç»‘定。绑定ćŻRust对那些来自C端的函数和类型的声ćŽă€‚ 例如,人们可以在Rustä¸ĺ†™ä¸€ä¸Ş ``Mutex`` 抽象,ĺ®ä»ŽC端包装一个 ``Mutex结构体`` ,并 通过绑定č°ç”¨ĺ…¶ĺ‡˝ć•°ă€‚ 抽象并不č˝ç”¨äşŽć‰€ćś‰çš„ĺ†…ć ¸ĺ†…é¨API和概念,但随着时间的推移,ć‘们打算扩大覆盖čŚĺ›´ă€‚“Leaf” 模块ďĽäľ‹ĺ¦‚,驱动程序)不应该直接使用CčŻč¨€çš„绑定。相反,ĺçł»ç»źĺş”čŻĄć ąćŤ®éś€č¦ćŹäľ›ĺ°˝ĺŹŻč˝ĺ®‰ 全的抽象。 有条件的编译 ------------ Rust代ç ĺŹŻä»Ąč®żé—®ĺźşäşŽĺ†…ć ¸é…Ťç˝®çš„ćťˇä»¶ć€§çĽ–čŻ‘: .. code-block:: rust #[cfg(CONFIG_X)] // Enabled (`y` or `m`) #[cfg(CONFIG_X="y")] // Enabled as a built-in (`y`) #[cfg(CONFIG_X="m")] // Enabled as a module (`m`) #[cfg(not(CONFIG_X))] // Disabled